If Errorlevel 3 Echo Форматирование прервано

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 Выберите нужную Вам операцию :