Какая команда используется для приостановки выполнения командных файлов
Цель работы: изучить использование основных команд, применяемых при разработке командных файлов; получить практические навыки разработки командных файлов.
Общие сведения
Основные команды, используемые при разработке командных (пакетных) файлов, приводятся в таблице 1. Рассмотрим подробнее их особенности и функциональные возможности.
ECHO [ON | OFF]
Использование команды возможно в следующих форматах:
echo off – запрет вывода на экран;
echo on – разрешение вывода на экран;
echo (без параметров) – запрос состояния эха (on или off) для определения текущего значения этой команды;
echo %имя переменной окружения% - вывод текущего значения переменной окружения.
Для продолжения нажмите любую клавишу .
Команду полезно использовать, когда на экране дисплея выводится большое количество информации порциями по страницам, чтобы можно было прочитать и затем перейти к следующему формату. Также ее можно использовать для управления работой командного файла. Если в ответ на команду pause нажать Ctrl+C, то появляется вопрос:
Завершить выполнение задания?
Выбор Y – останавливает выполнение командного файла, а N - обеспечивает продолжение его выполнения.
2.1.3 Команда findпозволяет осуществить поиск слова/фразы в указанном файле. С помощью параметров, перечень которых легко найти, используя справочную систему, можно получить различные варианты поиска. На примере команды findрассмотрим использование формальных и замещаемых параметров в командах.
Создадим текстовый файл tt1.txt:
what country are you from?
what is you name?
Создадим командный файл cf1.bat:
find /%1 "%2" %3
В созданном командном файле содержатся следующие замещаемые параметры: %1 – запрашивает режим поиска; %2 – определяет запрос строки символов для поиска; %3 – запрашивает имя файла, в котором будет отыскиваться слово «what».
Запуск можно выполнить следующей строкой:
C:\DOCUME~1\bista\0016~1\ooo> cf1.bat n what tt1.txt
C:\DOCUME~1\bista\0016~1\ooo> find /n "what" tt1.txt
При этом на экран будет выведен следующий результат поиска:
---------- TT1.TXT
[2] what country are you from?
[3] what is you name?
Другой вариант поиска можно осуществить с помощью следующей строки:
C:\DOCUME~1\bista\0016~1\ooo>cf1.bat c what tt1.txt
C:\DOCUME~1\bista\0016~1\ooo>find /c "what" tt1.txt
В качестве результата на экране появится запись о количестве найденных в файле слов:
---------- TT1.TXT: 2
2.1.4 Команда goto – позволяет изменить привычную последовательность команд выполнения операторов командного файла. Когда командный процессор встречает строку с оператором goto, то он просматривает все строки файла и отыскивает соответствующую метку–строку с двоеточием. Идентификатор метки может иметь до восьми символов. Команда может использоваться самостоятельно или совместно с оператором if.
2.1.5 Команда if – организует разветвление при выполнении командного файла, т.е. реализует условное выполнение команд. Ее формат:
if условие команда
В качестве условия обычно используются:
а) проверка наличия файла. В этом случае в качестве условия записывается фраза:
exist диск:\путь\имя файла.расширение
б) проверка идентичности двух символьных строк. Условие задается в виде:
str1==str2
Пример 2. Проверка идентичности двух символьных строк.
Echo off
set /p s=str
set /p s1=str
if %s%= =%s1% goto m1
Echo all right
:m1
set /a n=2
Echo on
echo %n%
End
Используя not, можно проверить противоположное условие.
Пример 3. Командный файл i2.bat проверяет, есть ли в текущем каталоге файл aaa.txt.
Команда EXIT используется для завершения пакетных файлов с установкой значения переменной ERRORLEVEL или для завершения командного процессора CMD.EXE ( для выхода из командной строки), если она выполняется вне пакетного файла.
Формат командной строки:
EXIT [/B] [exitCode]
Параметры командной строки:
/B - Предписывает завершить текущий пакетный файл-сценарий вместо завершения CMD.EXE. Если выполняется вне пакетного файла-сценария, то будет завершена программа CMD.EXE
exitCode - Указывает цифровое значение. Если указан ключ /B, определяет номер для ERRORLEVEL. В случае завершения работы CMD.EXE, устанавливает код завершения процесс с данным номером.
Примеры использования команды EXIT
exit - завершить текущий сеанс CMD
Команда EXIT с параметрами используются, как правило, только в командных файлах. Например, для индикации результата выполнения с установкой значения переменной среды ERRORLEVEL
REM перейти к метке, где выполняется выход с ERRORLEVEL=0
REM перейти к метке, где выполняется выход с ERRORLEVEL=1
REM установить ERRORLEVEL равный 0 и завершить работу
REM установить ERRORLEVEL равный 1 и завершить работу
Параметр /B используется в тех случаях, когда выполняется завершение командного файла, но необходимо продолжить работу командного процессора. Например, когда командный файл 1.bat вызывает командной CALL другой командный файл 2.bat , результат выполнения которого, характеризуется значением переменной окружения ERRORLEVEL . Если в вызываемом командном файле использовать команду EXIT без параметра /B, то будет завершена работа вызываемого файла 2.bat, а также вызывающего файла 1 .bat и интерпретатора CMD.EXE, т.е вместо выхода из вызываемого файла будет полностью завершен сеанс командной строки.
Простейший пример, когда командный файл 1.bat вызывает на выполнение другой командный файл с именем 2.bat и выводит на экран значение ERRORLEVEL, установленное при выходе из вызываемого файла:
echo Batch file 2.bat executed with ERRORLEVEL = %ERRORLEVEL%
Файл 2.bat завершается командой EXIT с установкой значения ERRORLEVEL, равного 128:
Batch file 2.bat executed with ERRORLEVEL = 128
Попробуйте убрать параметр /B в команде EXIT командного файла 2.bat и оцените полученный результат.
В создании этой статьи участвовала наша опытная команда редакторов и исследователей, которые проверили ее на точность и полноту.
Команда контент-менеджеров wikiHow тщательно следит за работой редакторов, чтобы гарантировать соответствие каждой статьи нашим высоким стандартам качества.
Из этой статьи вы узнаете, как предотвратить немедленный запуск пакетного файла, когда его открывают. Есть несколько различных команд, которые можно использовать для задержки пакетного файла. Имейте в виду, что вы должны хорошо знать, как создавать пакетные файлы, прежде чем пытаться сделать его задержку.
- Если есть готовый пакетный файл, щелкните по нему правой кнопкой мыши и в меню выберите «Изменить», чтобы открыть файл в Блокноте. Затем пропустите следующие два шага.
Откройте Блокнот. Введите блокнот , чтобы найти Блокнот, а затем нажмите «Блокнот» в верхней части меню «Пуск».
Создайте пакетный файл. Сначала введите команду @echo off , а затем введите другие команды своего пакетного файла.
- PAUSE — работа пакетного файла приостанавливается до тех пор, пока не будет нажата стандартная клавиша (например, пробел).
- TIMEOUT — работа пакетного файла приостанавливается на заданное количество секунд (или до нажатия клавиши).
- PING — работа пакетного файла приостанавливается до тех пор, пока файл не получит ответ с указанного адреса компьютера. Обычно это приводит к небольшой задержке, если пингуется рабочий адрес.
Выберите место, куда ввести команду задержки. Это можно сделать в любой точке кода (но после команды «Exit», если вы ее использовали). Прокрутите вниз, найдите точку, в которой хотите приостановить работу файла, а затем введите пробел между кодом до точки задержки и кодом после этой точки.
Командный файл – это группа последовательных команд настройки компьютера на определенный режим или выполнение определенных операций.
Командный файл создается по обычным правилам, но расширением должно быть только одно сочетание - bat (сокращение от batch – пачка).
Выполнение командного файла может быть прекращено командами Ctrl+Break или Ctrl+C.
Командный файл выполняется командным процессором строка за строкой.
Из командного файла можно вызвать другой командный файл командой Call (с возвратом) или обычной командой вызова (без возврата).
Перед выполнением очередной строки командного файла ее значение выводится на экран. Вывод любой строки командного файла на экран подавляется, если строка начинается с символа @.
Для построения командных файлов используются специальные внутренние команды операционной системы (см. таблицу 1.1), а также внешние find, sort, mode, more.
Таблица 1.1 - Команды командных (пакетных) файлов
Рассмотрим особенности использования некоторых команд.
Команда set предназначена для вывода, создания и удаления переменных среды интерпретатора команд. Команда имеет формат:
set [переменная=[строка]]
Эта команда формирует переменную окружения в резервируемой памяти операционной системы, доступной для команд ОС. Имя переменной не должно совпадать с ключевыми резервируемыми словами. Команда setбез параметра выводит содержимое всех используемых ос переменных окружения, а команда set имя =(без значения) удаляет соответствующую строку окружения.
Команда set /a переменная = выражениепозволяет обрабатывать арифметические и алгебраические выражения, заданные в правой части выражения.
Ключ /P позволяет установить значение переменной для входной строки, введенной пользователем.
Показывает указанное приглашение promptStringперед чтением введенной строки. Приглашение promptString может быть пустым.
Для обращения к переменным окружения их имена следует заключать в знаки %. Формальные параметры, включаемые в строки командного файла, имеют вид %1, и так далее до %9. Фактические значения вводятся в строке вызова командного файла.
Задания к лабораторной работе
1.2.1 Используя справочную систему Windows, выполните следующие действия:
- определите текущую дату;
- установите новую дату, соответствующую дате Вашего дня рождения;
- при выходе из режима командной строки установите текущую дату;
- при выходе установите стандартный вид приглашения;
- установите различные сочетания цветов текста и фона.
1.2.2 Используя команды файловой системы Windows, выполните следующие действия:
- создать дочерний каталог для текущего каталога;
- используя команду dir, убедитесь в создании подкаталога;
- сделайте дочерний каталог текущим;
- выйдите в корневой каталог;
- вернитесь в исходный каталог;
- создайте текстовый файл с некоторым фрагментом текста;
- выполните команду find/;
- создайте несколько текстовых файлов с наличием в них одни и тех же элементов текста;
- организуйте поиск элементов текста в группе файлов, используя шаблоны имен файлов (например,*.txt).
1.2.3 Используя справочную систему Windows, изучите функциональные возможности команды attrib и выполните следующие действия:
- установите для одного из файлов, созданных в п.1.2.2, поочередно атрибуты - скрытый, системный, архивный;
- убедитесь в том, что установленные атрибуты приняты системой;
1.2.4 Выполните реализацию задач из п.1.2.2 в любой из известных Вам сред визуального или объектно-ориентированного программирования (Delphi, C++Builder, VisualC++ и т.д.).
Требования к отчету
Отчет по работе выполняется на бумажном носителе и должен содержать:
- задание к работе;
- описание порядка выполнения действий;
- листинги программ с комментариями;
- снимки экрана с результатами работы;
- выводы по каждому заданию.
1.4 Контрольные вопросы
1.4.1 Каким образом осуществляется включение и отключение режима командной строки?
1.4.2 На какие группы можно разделить внутренние команды Windows?
1.4.3 Назовите способы получения справки по командам Windows.
1.4.4 Какие команды относятся к командам файловой системы?
1.4.5 С помощью какой команды выполняется настройка вида приглашения по желанию пользователя?
1.4.7 Какие команды относятся к командам управления работой Windows?
1.4.8 Что представляет собой командный файл?
1.4.9 Какая команда позволяет работать с переменными среды интерпретатора команд?
Для того, чтобы вручную прервать выполнение запущенного bat-файла, нужно нажать клавиши + или +. Однако часто бывает необходимо программно приостановить выполнение командного файла в определенной строке с выдачей запроса на нажатие любой клавиши. Это делается с помощью команды PAUSE. Перед запуском этой команды полезно с помощью команды ECHO информировать пользователя о действиях, которые он должен произвести. Например:
ECHO Вставьте дискету в дисковод A: и нажмите любую клавишуPAUSE
Команду PAUSE обязательно нужно использовать при выполнении потенциально опасных действий (удаление файлов, форматирование дисков и т.п.). Например,
ECHO Сейчас будут удалены все файлы в C:\Мои документы!ECHO Для отмены нажмите Ctrl-CPAUSEDEL "C:\Мои документы\*.*"
Вызов внешних командных файлов
Из одного командного файла можно вызвать другой, просто указав его имя. Например:
REM Вывод списка log-файлов
REM Передача выполнения файлу f.bat
Однако в этом случае после выполнения вызванного файла управление в вызывающий файл не передается, то есть в приведенном примере команда
(и все следующие за ней команды) никогда не будет выполнена.
Для того, чтобы вызвать внешний командный файл с последующим возвратом в первоначальный файл, нужно использовать специальную команду
REM Вывод списка log-файлов
REM Передача выполнения файлу f.bat
В этом случае после завершения работы файла f.bat управление вернется в первоначальный файл на строку, следующую за командой CALL (в нашем примере это команда COPY A:\*.* C:\).
Операторы перехода
Командный файл может содержать метки и команды GOTO перехода к этим меткам. Любая строка, начинающаяся с двоеточия :, воспринимается при обработке командного файла как метка. Имя метки задается набором символов, следующих за двоеточием до первого пробела или конца строки. Приведем пример.
Пусть имеется командный файл следующего содержания:
ECHO Эта строка никогда не выполнится
REM Продолжение выполнения
После того, как в этом файле мы доходим до команды
его выполнение продолжается со строки
REM Продолжение выполнения
В команде перехода внутри файла GOTO можно задавать в качестве метки перехода строку :EOF, которая передает управление в конец текущего пакетного файла (это позволяет легко выйти из пакетного файла без определения каких-либо меток в самом его конце).
В качестве команды в строке командного файла можно использовать также командный файл. Причем, для передачи с возвратом обратно к точке выполнения вызывающего командного файла используется команда CALL. Попробуйте создать командный файл test.bat, следующего содержания:
@ECHO OFF
ECHO Вызов 1.bat
CALL 1.bat
ECHO Возврат.
В этом же каталоге, создайте второй файл под именем 1.bat, содержащий команду
PAUSE , приостанавливающую выполнение командного файла до нажатия любой клавиши.
@ECHO OFF
pause
Вызываемый командный файл может создавать переменные и присваивать им определенные значения, которые будут доступны для обработки в вызывающем файле. Попробуйте изменить файл test.bat на следующее содержимое:
@ECHO OFF
ECHO Вызов 1.bat
CALL 1.bat
ECHO Получено из файла %MYFILE% значение MYNUMBER=%MYNUMBER%.
а в файле 1.bat на следующее
@ECHO OFF
SET MYFILE="Very good 1.bat"
SET MYNUMBER=99
Кстати, используя передачу управления командному файлу, можно организовать его зацикливание. Попробуйте добавить в конец файла test.bat строку:
CALL test.bat
Выйти из зацикливания командного файла можно по нажатию комбинации CTRL-Break.
Возможно использование команды CALL для вызова процедуры внутри командного файла. В этом случае в качестве аргумента используется не имя внешнего файла, а метка:
call :proc1
.
:proc1
.
exit
Таким образом, подобное использование команды CALL очень похоже на обычный вызов подпрограмм (процедур) в алгоритмических языках программирования.
Операторы условия
С помощью команды IF … ELSE (ключевое слово ELSE может отсутствовать) в пакетных файлах можно выполнять обработку условий нескольких типов . При этом если заданное после IF условие принимает истинное значение, система выполняет следующую за условием команду (или несколько команд, заключенных в круглые скобки), в противном случае выполняется команда (или несколько команд в скобках), следующие за ключевым словом ELSE(также как в языках программирования).
7.1 Первый тип условия. Проверка значения переменной
Первый тип условия используется обычно для проверки значения переменной. Для этого применяются два варианта синтаксиса команды IF:
IF [NOT] строка1==строка2 команда1 [ELSE команда2]
(квадратные скобки указывают на необязательность заключенных в них параметров) или
IF [/I] [NOT] строка1 оператор_сравнения строка2 команда
Рассмотрим сначала первый вариант. Условие строка1==строка2 (здесь необходимо писать именно два знака равенства) считается истинным при точном совпадении обеих строк. Параметр NOT указывает на то, что заданная команда выполняется лишь в том случае, когда сравниваемые строки не совпадают.
Строки могут быть литеральными или представлять собой значения переменных (например, %1 или %TEMP%). Кавычки для литеральных строк не требуются. Например,
IF %1==%2 ECHO Параметры совпадают!
IF %1==Петя ECHO Привет, Петя!
Отметим, что при сравнении строк, заданных переменными, следует проявлять определенную осторожность. Дело в том, что значение переменной может оказаться пустой строкой, и тогда может возникнуть ситуация, при которой выполнение командного файла аварийно завершится. Например, если вы не определили с помощью команды SET переменную MyVar, а в файле имеется условный оператор типа
IF %MyVar%==C:\ ECHO Ура.
то в процессе выполнения вместо %MyVar% подставится пустая строка и возникнет синтаксическая ошибка. Такая же ситуация может возникнуть, если одна из сравниваемых строк является значением параметра командной строки, так как этот параметр может быть не указан при запуске командного файла. Поэтому при сравнении строк нужно приписывать к ним в начале какой-нибудь символ, например:
IF -%MyVar%==-C:\ ECHO Ура.
С помощью команд IF и SHIFT можно в цикле обрабатывать все параметры командной строки файла, даже не зная заранее их количества. Например, следующий командный файл (назовем его primer.bat) выводит на экран имя запускаемого файла и все параметры командной строки:
ECHO Выполняется файл: %0
ECHO Файл запущен со следующими параметрами.
REM Начало цикла
IF -%1= =- GOTO ExitLoop
REM Сдвиг параметров
REM Переход на начало цикла
REM Выход из цикла
Если запустить primer.bat с четырьмя параметрами:
primer.bat А Б В Г
то в результате выполнения на экран выведется следующая информация:
Выполняется файл: primer.bat
Файл запущен со следующими параметрами:
Рассмотрим теперь оператор IF в следующем виде:
IF [/I] строка1 оператор_сравнения строка2 команда
Синтаксис и значение операторов_сравнения представлены в табл. 3.2.
Таблица 3.2. Операторы сравнения в IF
Приведем пример использования операторов сравнения:
IF -%1 EQL –Вася ECHO Привет, Вася!
IF -%1 NEQ –Вася ECHO Привет, но Вы не Вася!
Ключ /I, если он указан, задает сравнение текстовых строк без учета регистра. Ключ /I можно также использовать и в форме строка1==строка2 команды IF. Например, условие
Читайте также: