GoTo Exit
If Errorlevel 1 Echo Попытайтесь отформатировать диск еще раз
GoTo Exit
If Errorlevel 0 Echo Все в порядке - Ваш диск отформатирован
:Exit
Команда Shift сдвигает список параметров пакетного файла на одну позицию влево относительно списка переменных. После однократного выполнения команды SHIFT переменная %1 получит значение второго параметра, %2 - третьего и т.д. Применение этой команды позволяет использовать практически неограниченное число параметров при ограниченном числе переменных.
:Loop
ECHO %1
SHIFT
IF -%1==- GOTO Exit (5)
GOTO Loop
:Exit
ECHO Список параметров исчерпан
В этом примере переменная %1 последовательно получает значения всех параметров, начиная с первого, и каждое ее значение выводится на экран до тех пор, пока список параметров не будет исчерпан (т.е пока переменная %1 не получит значения "пусто").
Команда FOR < параметр цикла > IN ( < список > ) DO < команд а> обеспечивает циклическое выполнение (DO) указанной <команды> для (FOR) всех значений ее параметра, помещенных в (IN) заданный список.
< Параметр цикла > (не путать с параметрами bat-файла!) обозначается одним символом (буквой), которому предшествуют два символа "%", например: %%A, %%W.
< Список > - это набор символьных строк, разделенных пробелами. Чаще всего - это спецификации файлов или имена подкаталогов – в этом случае допускается использование групповых имен с подстановочными символами "*" и "?".
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 %%k IN (*.%1) DO ECHO %%k (7)
Пример иллюстрирует использование в <списке> переменных bat-файла и групповых имен файлов. Приведенная выше команда выводит на экран имена всех файлов текущего каталога, имеющих расширение, задаваемое первым параметром bat-файла.
FOR %%L IN (txt doc xls) DO IF exist %1.%%L COPY %1.%%L DIR1\ (8)
Пример иллюстрирует использование команды IF, вложенной в команду FOR: производится последовательное копирование в каталог DIR1 из текущего каталога всех файлов с заданным именем (%1) и расширениями.txt,.doc,.xls, если такие файлы созданы в текущем каталоге.
Использование команд IF, ECHO и CHOICE для создания меню
Команда CHOICE (в переводе - выбор) выводит на экран вопрос и предлагает пользователю выбрать (то есть ввести с клавиатуры) один из нескольких вариантов ответа из предлагаемого списка возможных ответов. Текст вопроса должен быть задан, как параметр команды. Список возможных ответов задается после ключа /С:.
Например, команда CHOICE /C:ДН Удалить файлы...? выведет на экран вопрос Удалить файлы...? и предоставит для выбора список из двух вариантов ответа: " Д " или " Н ". Пользователь может выбрать один из двух ответов путем ввода с клавиатуры символа "Д" или символа "Н". После ввода ответа команда CHOICE завершает свою работу и присваивает числовое значение переменой ERRORLEVEL, равное порядковому номеру ответа в предложенном списке. Это значение может быть использовано командами, записанными ниже в тексте bat-файла, например, командой IF.
При запуске следующего bat-файла команда удаления файлов будет выполняться в том случае, если пользователь выбрал утвердительный ответ "Д" (номер 1 в списке):
CHOICE /C:ДН Удалить все файлы из каталога \TEXT?
IF ERRORLEVEL 2 GOTO Exit
ECHO Удаляю файлы (9)
DEL \TEXT\*.* > Nul
ECHO Файлы удалены
: Exit
Замечания
· Параметр команды CHOICE, содержащий текст вопроса, может быть опущен - в этом случае команда выведет только список ответов.
· Ключ /С: с вариантами ответов тоже может быть опущен - в этом случае будет выведен стандартный список из двух ответов " YN ".
· Команда использует и другие ключи, полный список которых выводится при ее запуске с ключом /?.
Следующий пример иллюстрирует возможности создания меню из нескольких пунктов с помощью команд CHOICE, ECHO, IF. В тексте bat-файла используются переменные, значения которых должны быть заданы соответствующими параметрами при запуске файла на выполнение:
1-й параметр - имя редактируемого текстового файла (переменная %1);
2-й параметр - имя каталога на диске D (%2);
3-й параметр - расширение файлов, подлежащих копированию (%3).
:Start
ECHO Выберите нужную Вам операцию: