Для организации
переходов по метке существует команда:
Если метка, указанная
в команде Goto, отсутствует в командном
файле, тогда его выполнение завершается
с ошибкой.
REM продолжение
выполнения командного файла
В этом примере с
помощью команды ‘Goto Tag’ производится
переход к строке командного файла,
следующей за меткой Tag.
In Windows, using batch files to script common tasks has been around for decades. Even though other scripting languages like PowerShell now exist, batch files are still widely used. If you see the goto batch command in a batch file and have always wondered what it does, you’re in luck.
In this tutorial, you will learn how the goto batch command works in batch files with several examples, and where you may still find a use for this older command today!
Пакетный файл (англ. ) — текстовый файл в MS-DOS, OS/2 или Windows, содержащий последовательность команд, предназначенных для исполнения командным интерпретатором. После запуска пакетного файла, программа-интерпретатор (как правило, COMMAND.COM или cmd.exe) читает его строка за строкой и последовательно исполняет команды. Пакетный файл — аналог cкриптовых файлов командной строки (shell script) в Unix-подобных операционных системах.
Пакетные файлы в DOS имеют расширение .BAT; для других операционных систем они могут иметь другие расширения — например, .CMD в Windows NT и OS/2 или .BTM в 4DOS (англ.) или подобных оболочках.
Специальные
команды существенно повышают эффективность
применения пакетных файлов, делая их
полноценными программами. Ниже дан
краткий обзор таких команд и рассмотрены
примеры их применения.
Таблица
1.2 – Специальные команды пакетных файлов
Команда
REM, помещенная в начале строки,
блокирует выполнение записанной в ней
команды. REM обычно используется для
записи комментариев в тексте командного
файла или для временного блокирования
команд.
Команда
: (двоеточие), помещенная в начале
текстовой строки (не более 8 символов
), присваивает этой строке статус
метки, которая может использоваться
в командах GOTO.
but it is going to lable “exam” even though error level is not equal to “1” plz help me
104 gold badges1074 silver badges1001 bronze badges
asked Feb 4, 2010 at 7:08
Your problem isn’t goto, its that errorlevel requires special treatment, it’s not like an ordinary environment variable. The only test you can do with errorlevel is to test whether it is greater than or equal to value.
so you have to test errorlevel values from highest to lowest because if errorlevel 1
then if errorlevel 1 will be true, but if errorlevel 0 will also be true
if you have command extensions enabled, and there is no environment variable called ERRORLEVEL (case insensitive). Then in theory you can use %ERRORLEVEL% like an ordinary environment variable. So this should also work
answered Feb 4, 2010 at 7:26
4 gold badges60 silver badges92 bronze badges
See this explanation and example.
answered Feb 4, 2010 at 7:10
18 gold badges97 silver badges144 bronze badges
7 gold badges64 silver badges107 bronze badges
answered Mar 22, 2013 at 22:22
10 gold badges58 silver badges91 bronze badges
answered Dec 23, 2017 at 16:38
More simple way to use for loop.
For /l %%a in (1,1,4) do (
answered Dec 23, 2017 at 17:13
I’ve played with several IF and GOTO commands, but I seem to be diverging from my goal. I know the two IF statements I currently am using below are garbage, but I left them in the syntax to convey the direction I think I should be moving in.
I can’t get the IF statements to use the GOTO commands. I also don’t think I fully understand how labels are supposed to work.
1 gold badge21 silver badges33 bronze badges
asked Dec 11, 2013 at 22:47
A label is a way to arbitrarily designate a line in a batch file. It is used by the GOTO command to change the usual top-to-bottom progression of command execution, specifying which line should be processed next. As you probably figured out, using IF commands in unison with GOTO allows for conditional processing, such as when values are met or errors are encountered.
Another use of a label could be for documentation or clarity. In my example above, “CheckFolders” isn’t used by a GOTO, but it lets the programmer hint at what that section of code does.
answered Dec 11, 2013 at 23:28
2 gold badges32 silver badges46 bronze badges
Although wild-cards do works in if exist, there are certain combinations that may fail. Also, you must enclose the name in quotes if the path may contain spaces. Try:
answered Dec 11, 2013 at 23:32

12 gold badges71 silver badges108 bronze badges

7 gold badges63 silver badges83 bronze badges
answered Dec 12, 2013 at 0:30
9 gold badges50 silver badges68 bronze badges
Команда if позволяет
выделять в командном файле группы
команд, которые выполняются или не
выполняются в зависимости от определенных
условий. Для чего это нужно?
Проверка условия —
почти необходимая мера при создании
командных файлов, использующих параметры.
Перед тем, как начинать работу, командный
файл, вообще говоря, должен удостовериться
в том, что ему передан корректный набор
параметров. В противном случае велик
риск, что он выполнится неверно или
безрезультатно, а пользователю останется
только гадать, в чем же проблема. Более
того, если командный файл удаляет,
перемещает или перезаписывает какие-либо
данные, то при некорректных параметрах
он может даже нанести ущерб.
На следующем листинге
показан уже знакомый вам командный файл
компиляции хелп-файла. В начало командного
файла добавлена проверка первого
параметра на непустоту. Обратите внимание
на такую особенность синтаксиса: для
операции сравнения используется
сдвоенный знак равенства. Если первый
параметр оказывается непустым, срабатывает
команда goto, которая «перебрасывает»
командный процессор к указанной метке.
В данном случае имя этой метки compile.
Обратите внимание, что там, где метка
находится, ее имя предваряется двоеточием,
а в команде goto нет. При пустом первом
параметре командный процессор переходит
к следующей строке, которая выдает
сообщение об ошибке. А потом к следующей,
которая перебрасывает его в самый конец
файла к метке с именем finish.
rem
Проверяем, задан ли параметр
if
not “%1″==”” goto compile
rem
Если параметр пуст, выдаем сообщение
об ошибке
rem
и переходим в конец командного файла
rem
Это метка с именем compile
rem
Ниже расположены команды компиляции
rem
Путь к компилятору хелп-файлов
set
help_compiler=”c:Program FilesHTML Help Workshophhc.exe”
rem
Путь к каталогу, в котором находятся
проекты хелп-файлов
rem
Вызываем компилятор для обработки
конкретного проекта,
rem
имя которого передаем в первом параметре
rem
Это метка с именем finish
Скажем прямо,
предложенный способ проверки параметра
не самый удачный.
Во-первых, если
пользователь по ошибке укажет в качестве
параметра имя несуществующего файла,
командный файл этим удовлетворится и
предпримет попытку компиляции. Более
правильный способ — проверить, существует
ли такой файл в действительности. Для
этого в языке команд MS-DOS предусмотрено
специальное слово exist.
Поэтому лучше было бы написать: if
exist %1.hpj goto compile.
if
not exist %1.hpj (
rem Если параметр пуст,
выдаем сообщение об ошибке
rem Ниже расположены
команды компиляции
rem Путь к компилятору
хелп-файлов
rem имя которого
передаем в первом параметре
Приведем еще один
пример работы с проверками. Следующий
командный файл создает каталог с именем
help-files
(предположим, для выгрузки в него
скомпилированных хелп-файлов). При этом,
если каталог с таким именем уже существует
(и в нем, вероятно, находятся старые
хелп-файлы, которые не хотелось бы
терять: вдруг новые окажутся хуже?),
командный файл присваивает ему расширение
bak. Но если каталог help-files.bak
уже существовал, то командный файл его
удаляет (будем считать, что одной
резервной копии нам хватит).
if
exist help-files.bak rd help-files.bak
if
exist help-files ren help-files help-files.bak
Соседние файлы в папке Командная строка
:EOF is a predefined label as Microsoft explains in documentation for command GOTO. The help output by running in a command prompt window goto /? explains also this special label for End Of File. But this predefined label is supported only with command extensions being enabled as by default.
The help output by running in a command prompt window call /? and of course also the documentation for command CALL explain both that goto :EOF should be used to exit a subroutine called with call :Label.
A subroutine is nothing else than another batch file embedded within current batch file called with command call. If the subroutine is at end of the batch file, real end of file marks the end of the subroutine.
But there can be multiple subroutines in a batch file.
So a command is needed for command interpreter to exit the subroutine on reaching a specific line in command processing and go back to the calling command line. goto :EOF as well as exit /B can be both used everywhere to either exit a subroutine or exit the current batch file processing.
In batch code in question the first goto :EOF is needed to exit batch file processing without an unwanted fall through to the subroutine code after finishing the loop.
The second goto :EOF in batch code of questioner is for exiting the subroutine and continue processing in FOR loop in second line. It does not exit processing of the batch file, it exits only the processing of the subroutine.
Note 1: goto EOF without a colon requires that there is really a line starting with :EOF in the batch file, i.e. the label EOF must exist in the file. goto :EOF always results in exiting subroutine/batch processing with command extensions enabled even if there is a label EOF in the batch file because of a line starting with :EOF.
Note 2: Command EXIT without parameter /B results always in exiting entire command process independent on calling hierarchy and independent on how the Windows command processor was started – with parameter /K to keep cmd.exe running as used when opening a command prompt window or with /C to close after command processing finished as used on double clicking a batch file. Therefore exit without /B should be used wisely in a batch file (best: never).
Note 3: exit /B without or with an exit code works always, but outputs an error message with command extensions disabled as demonstrated by this code:
Executing this batch file from within a command prompt window results in output of the error message:
The system cannot find the batch label specified – EOF
It looks like there is assigned first the specified exit code value 5 to the dynamic variable ERRORLEVEL on using exit /B 5 and next is executed goto :EOF because of option /B. That fails because of disabled command extensions resulting in the error message and in exiting the batch file processing as it always occurs on a label to go to does not exist in a batch file.
Note 5: Do not use goto:EOF or call:Label in a batch file with no space between command GOTO respectively CALL (argument 0) and the label (argument 1). There should be always used goto :EOF and call :Label with a space as argument strings separator between command and label. The reason is that goto:EOF results in the attempts to find in current directory first a file with name goto: and next a file with name goto:EOF. The incorrect command call:Label results in searching for a file with name call: and next with name call:Label. The file system returns for both syntactically wrong commands twice to cmd.exe that the name is invalid. Then cmd.exe detects the colon as reason for the invalid name and splits the command up into command and label argument and finally runs the command with success. The usage of goto :EOF and call :Label does not cause any wrong file system accesses as cmd.exe immediately recognizes the string goto respectively call as internal command.
For details on ERRORLEVEL behavior see:
Prerequisites
As the goto executable is a part of the cmd.exe suite of batch commands, any version of supported Windows will work.
Команда echo используется в трех модификациях
TYPE
Dir.lst
Пусть
в текущем каталоге зарегистрированы
два bat-файла
: QQQ.bat
и PPP.bat
CALL PPP.bat File_1 %3 %1
При
запуске файла QQQ
командой “QQQ.bat
Dir1
Name1
Name2”
его переменные
%1, %2 и %3 получат значения соответственно
Dir1,
Name1
и Name2.
При выполнении
второй команды этого файла в подкаталог
Dir1
будет скопирован файл
Name1 под именем
Name2.
Команда CALL
запустит на выполнение файл PPP.bat,
передав ему в качестве первого параметра
текстовую константу File_1,
в качестве
второго параметра – значение переменной
%3 файла QQQ.bat (то есть Name2),
а в качестве третьего параметра –
значение первого параметра файла QQQ.bat
(то есть Dir1).
В результате переменные %1, %2 и %3 файла
PPP.bat
получат
значения соответственно File_1,
Name2
и Dir1,
и два соответствующих файла будут
соединены и сохранены в файле Name2,
зарегистрированном в каталоге
Dir1.
После
завершения работы файла PPP.bat
будет выполнена команда TYPE
файла QQQ.bat,
которая выведет на экран содержимое
файла Name2.
Можно
запустить bat-файл
из другого bat-файла
и без команды CALL
(например, вместо строки CALL
PPP.bat
File_1
%3 %1 записать
строку
PPP.bat
File_1
%3 %1). Однако,
в этом случае после завершения работы
вложенного bat-файла
PPP.bat
не произойдет
возврата к следующей строке исходного
bat-файла
QQQ.bat.
Таблица
1.3 – Коды завершения программ
В
приведенном ниже фрагменте текста
bat-файла
команда IF
анализирует числовое значение кода
завершения программы форматирования
диска и выдает соответствующее сообщение.
Команда
Shift
сдвигает
список параметров пакетного файла на
одну позицию влево относительно списка
переменных. После однократного выполнения
команды SHIFT переменная %1 получит значение
второго параметра, %2 – третьего и т.д.
Применение этой команды позволяет
использовать практически неограниченное
число параметров при ограниченном числе
переменных.
IF -%1==- GOTO
Exit (5)
В
этом примере переменная %1 последовательно
получает значения всех параметров,
начиная с первого, и каждое ее значение
выводится на экран до тех пор, пока
список параметров не будет исчерпан
(т.е пока переменная %1 не получит значения
“пусто”).
FOR %%d IN (Dir1 Dir2
Dir3) DO MD %%d
FOR
%%d IN (Dir1 Dir2 Dir3) DO COPY File1 %%d (6)
Выполнение
этих двух команд, включенных в текст
bat-файла,
приведет к созданию в текущем каталоге
трех подкаталогов – Dir1,
Dir2
и Dir3
и копированию в каждый из них из текущего
каталога файла File1
под своим именем.
FOR
%%L IN (txt doc xls) DO IF exist %1.%%L COPY %1.%%L DIR1 (8)
Пример
иллюстрирует использование команды
IF,
вложенной в команду FOR:
производится последовательное копирование
в каталог DIR1 из текущего каталога всех
файлов с заданным именем ( %1 ) и
расширениями .txt,
.doc,
.xls,
если такие файлы созданы в текущем
каталоге.
Команда
CHOICE ( в
переводе – выбор ) выводит на экран вопрос
и предлагает пользователю выбрать ( то
есть ввести с клавиатуры ) один из
нескольких вариантов
ответа из
предлагаемого списка возможных ответов.
Текст вопроса должен быть задан, как
параметр команды. Список возможных
ответов задается после ключа /С:.
При
запуске следующего bat-файла
команда удаления файлов будет выполняться
в том случае, если пользователь выбрал
утвердительный ответ “Д” (номер 1
в списке):
CHOICE
/C:ДН
Удалить все файлы из каталога TEXT
?
IF
ERRORLEVEL 2 GOTO Exit
- Параметр
команды CHOICE,
содержащий текст вопроса, может быть
опущен – в этом случае команда выведет
только список ответов. - Ключ
/С: с
вариантами ответов тоже может быть
опущен – в этом случае будет выведен
стандартный список из двух ответов
“YN”. - Команда
использует и другие ключи, полный список
которых выводится при ее запуске с
ключом /?.
1-й
параметр – имя редактируемого текстового
файла ( переменная %1);
2-й
параметр – имя каталога на диске D
(%2);
3-й
параметр – расширение файлов, подлежащих
копированию (%3).
IF
ERRORLEVEL 5 GOTO EXIT
IF
ERRORLEVEL 4 GOTO EDITOR
IF
ERRORLEVEL 3 GOTO DIRECTORY
IF
ERRORLEVEL 2 GOTO COPYFILE
GOTO
Start
(10)
COPY
D: %2*.%3 A:*.*
Командный файл
Командный файлКомандный файл – текстовый файл, каждую строку которого операционная система интерпретирует как обращение к той или иной функции ОС. Командные файлы используется для организации пакетной обработки.Синонимы: Пакетный файл
Финансовый словарь Финам.
Смотреть что такое “Командный файл” в других словарях
Jumping to different points of a batch file is handy but in the previous example, it wasn’t practical. To add more practicality, what if you needed a batch script to run some commands only if a certain condition were true?
The goto command used in conjunction with the if command gives you control over exactly when that jump is made. For example, check out the below example. In this example, the batch file is using the call command to run a program. That program will always return an exit code that’s always represented in the internal ERRORLEVEL variable.

Non-zero exit code
Next Steps
Despite there being newer automation languages, such as PowerShell, batch files still find use in many different areas, such as package deployment. Understanding how to structure a script with goto statements and control the script flow becomes invaluable to crafting useful automations!
Пакетный файл (англ. ) — текстовый файл в OS/2 или Windows, содержащий последовательность команд, предназначенных для исполнения командным интерпретатором. После запуска пакетного файла, программа — интерпретатор (как правило CMD.EXE) читает его строка за строкой и последовательно исполняет команды. Пакетный файл — аналог shell script в Unix-подобных операционных системах.
Пакетные файлы полезны для автоматического запуска приложений. Основная область применения — автоматизация наиболее рутинных операций, что регулярно приходится совершать пользователю компьютера. Примерами таких операций могут служить — обработка текстовых файлов; копирование, перемещение, переименование, удаление файлов; работа с папками; архивация; создание резервных копий баз данных и т. п. Пакетные файлы поддерживают операторы goto (а в системах семейства Windows NT и расширенный оператор for), что позволяет обрабатывать результаты выполнения предыдущих команд или приложений и в зависимости от этого выполнять дальше тот или иной блок команд (как правило, в случае удачного завершения приложение возвращает 0 в переменной errorlevel; в случае неудачного — 1 или большее значение).
Пакетные файлы могут содержать как внутренние команды, обрабатываемые непосредственно COMMAND.COM или CMD.EXE, так и обращения к внешним утилитам, существующим в виде отдельных программ (.EXE файлов). Данные программы значительно расширяют возможности пакетных файлов.
Программирование пакетных файлов появилось в MS-DOS и Windows с самого зарождения этих операционных систем. Командные интерпретаторы этих систем предлагают два режима работы: интерактивный режим (когда пользователь непосредственно вводит команды в командной строке и немедленно их исполняет) и пакетный режим (когда пользователь запускает предварительно записанную последовательность команд). Концепция обоих режимов была почерпнута из различных Unix—оболочек, равно как и из других текстовых интерфейсов командной строки начала 1980-х годов, таких как CP/M.
Коммандный интерпретатор в MS-DOS имеет название COMMAND.COM. Эволюция этой ветви пакетного программирования прошла через различные версии MS-DOS к Windows 95, Windows 98 и, наконец, к Windows Me. Наиболее известным пакетным файлом в этих системах является
Новые версии Windows — Windows 2000, Windows XP и Windows Vista основаны не на MS-DOS, а на Windows NT. NT-подобные системы включают интерпретатор
Существуют различные другие командные интерпретаторы, разработанные не компанией
Также имеются различные компиляторы пакетных файлов, превращающие пакетные файлы в исполняемые программы.
Использование в вирусописательстве
Пакетные файлы, как и другие языки программирования, также используются для написания вирусов, хотя как правило приходится применять нетривиальные трюки для обхода ограниченности языков пакетных файлов. Однако задачу написания вирусов облегчает то, что в пакетных файлах доступен весь функционал утилит командной строки, представленных в операционной системе.
Пример простого пакетного файла:
.
.
Unlike the goto command, the call command will run code after the label and then return execution to after the original call command when terminated.
In the below example, this batch file is running the subroutine called my_subroutine using the call command. Then, inside of that subroutine, the batch script runs the goto:eof command to jump to the end of the script.

Best Practices Using Labels
In the previous example, you defined labels with an underscore. There’s nothing wrong with this approach but there are many other ways to create these labels. There are several caveats to keep in mind, as not just any label will work.
What will work in a label:
- Spaces
- Periods
- Hypens
What won’t work in a label:
- Equal signs (=)
- Semicolons (;)
- Ending with anything other than a space, colon or CR/LF (carriage return / line-feed) or simply pressing Enter.
Adding various control characters will cause the batch script to run forever in a loop and require manual termination.
If you define a label and the goto command cannot find it, you will receive an error indicating “The system cannot find the batch label specified“.
If a label isn’t found searching forward from the GOTO statement to the end of the file, cmd.exe will restart the search at the beginning of the file.
In fact, if you use either of the GOTO statements with the equal (=) or semicolons (;),

Demonstrating various label iterations
История
Поддержка пакетных файлов имелась в MS-DOS с самого начала. Командные интерпретаторы этой системы (а затем и Windows) предлагают два режима работы: интерактивный (когда пользователь непосредственно вводит команды в командной строке и немедленно их исполняет) и пакетный (когда пользователь запускает предварительно записанную последовательность команд). Концепция обоих режимов была почерпнута из интерфейсов командной строки предшествующих ОС (таких как CP/M) и Unix-оболочек.
Командный интерпретатор в MS-DOS (а следом и в семействе Windows 9x) имеет название COMMAND.COM. Наиболее известным пакетным файлом в этих системах является AUTOEXEC.BAT, который автоматически исполняется COMMAND.COM во время загрузки операционной системы.
Семейство Windows NT (2k, XP и далее) не основаны на MS-DOS и включают интерпретатор cmd.exe, который частично совместим с COMMAND.COM. Некоторые старые возможности COMMAND.COM в нём недоступны, однако вместо них появились новые. COMMAND.COM включается в NT-подобные системы для обеспечения лучшей обратной совместимости.
Существуют и другие командные интерпретаторы, разработанные сторонними компаниями и предоставляющие расширенный синтаксис команд для пакетного программирования — например, 4DOS (англ.).
Также, существуют компиляторы пакетных файлов (например, Bat To Exe Converter), преобразующие пакетные файлы в самостоятельные исполнимые программы.
Ссылки
Пакетные файлы полезны для автоматического запуска приложений. Основная область применения — автоматизация наиболее рутинных операций, которые регулярно приходится совершать пользователю компьютера: например, копирование, перемещение, переименование, удаление файлов; работа с папками; архивация; создание резервных копий баз данных и т. п.
Проверка условий в пакетных файлах. Команда if
Команда IF позволяет
в зависимости от выполнения некоторых
условий выполнять или не выполнять
требуемую команду. Формат команды:
Здесь команда
– это любая допустимая команда (в том
числе Goto). Эта команда выполняется, если
условие в команде IF истинно, в противном
случае команда игнорируется.
Строка условие
– это одно
из приведенных ниже выражений:
ERRORLEVEL
число–
истинно тогда, когда код завершения
предыдущей выполненной программы больше
или равен
заданному числу.
Код завершения устанавливается
программами при окончании их работы,
по умолчанию этот код равен нулю.
EXIST
имя – файла
–истинно,
если указанный файл существует.
NOT
условие–истинно,
когда указанное условие
ложно.
Пример.
Создадим командный файл Typ.bat, который
выводит указанный как параметр файл на
экран. Формат вызова будет: ‘Typ имя-файла’.
В этом командном файле нужно проверить,
задан ли при вызове параметр и существует
ли указанный файл. Командный файл Typ.bat
имеет следующий вид:
Замечание.
Коды возврата, которые имеет смысл
проверять с помощью команды ‘IF
ERRORLEVEL’, возвращают следующие программы
MS-DOS: ChkDsk, Choice, Defrag, Deltree, DtskComp, DiskCopy, Find,
Format, KeyB, Move, MSAV, Replace, Restore, Scandisk, SetVer и
ХСору.
Сравнение с
пустой строкой.
Используя в команде IF символьные имена
параметров %0 – %9 следует проявлять
осторожность. Например, сравнение
второго параметра командного файла со
строкой ‘sss’ не следует делать так:
Дело в том, что
если в командный файл передано меньше
двух параметров, тогда все символы %2 в
нем будут замещены пустой строкой, и
при выполнении команды возникнет ошибка
из-за того, что аргумент слева от оператора
‘==’ будет отсутствовать. Правильная
команда сравнения должна использовать
префикс ‘-’ в аргументах:
Understanding a Simple goto Command
Let’s say you have a batch script with a couple of simple lines to send text to the screen like below.
When you run it, as seen below, it sends the three messages to the screen.

Running a simple batch file
Now, perhaps, you’d like to run the third line before the second line. You could cut and paste but for a real batch file, this might not be possible. Instead, you can redirect the batch file with the goto command. To do that, you’ll use the GOTO command combined with a label.
Below you can see three concepts:
- The goto labels created by starting with a colon with code underneath called run_first.
- Comments that start with :: to indicate the code is not executable.
- An optional goto:eof command that tells the batch script to finish or jump to the end of the file (eof). Notice the colon vs. the space here. If you simply use GOTO eof, without the colon, the batch script looks for the label of :eof somewhere in the file and does not jump to the end and return!

Special Cases, Bugs, and GOTO Statement Considerations!
As with any command, there are special cases, bugs, and important considerations to keep in mind while using the goto statement in your code.
Command Extensions and the
You may have noticed that the previous examples used extensive use of the :eof label. cmd.exe has both internal and external commands. Although the goto command is built-in to cmd.exe, the special label :eof is known as a command extension.
- Use the option, cmd.exe /e:off to disable command extensions.
- Within a batch script, run the command SETLOCAL DisableExtensions
Although the goto command will work in most contexts, the special label :eof will no longer take effect. You can get around this limitation by using a goto label at the very end of the batch script.

The left-hand script fails due to the :eof label, whereas the right-hand script properly goes to the end.
When you disable command extensions, other cmd.exe functionality also ceases to work such as the dynamic variables, %TIME%.
Using Command Groups and Goto Batch Commands in an if Statement
A command group is a series of commands grouped within a parenthesis. This allows an entire set of commands to be operated as one. If you include a goto statement within the command group and an if statement, the remaining conditionals are ignored, such as the below else statement, and the included code is executed.

Demonstrating how a command group with a GOTO statement breaks an if statement
As you might imagine, this could have unintended consequences! If, for example, you included a delete command in the else statement that was not intended to run, this goto statement will break that logic.



