Как использовать язык пакетных файлов Microsoft
Пакетные файлы - это команды DOS упакованные вместе. В Unix-подобных системах они известны как shell-скрипты и используют совершенно другой синтаксис. Пользователям ранних версий Windows нужно было использовать пакетные файлы (autoexec.bat), чтобы назначить букву диска для CD-ROM, что, в свою очередь, было необходимо для установки Windows. Теперь пакетные файлы не так важны, однако они поддерживаются более новыми версиями Windows.
В Windows XP/2000+, пакетные файлы (*.bat) выполняются в специальном окне (так называемая Командная Строка), которое создано программой c:windowssystem32cmd.exe (или command.com в некоторых случаях). Команды можно вводить по одной, а можно перечислить последовательно в файле, для чего и нужен язык пакетных файлов. В этой статье мы расскажем, как создавать и запускать пакетные файлы и в качестве примера приведем простой скрипт для резервного копирования.
Шаги
-
1
Откройте текстовый редактор. Вы будете нажимать кнопки A-Z/0-9/, символы (!$| и т.д.) и Enter. Большинство команд не обращают внимания на верхний/нижний регистр, поэтому не беспокойтесь о CAPS LOCK (или даже CaPs LoCk). Каждая команда с ее параметрами начинается с новой строки. Откройте командную строку (cmd.exe), чтобы проверять команды. Передвиньте окна так, чтобы вы могли видеть, одновременно, командную строку и текстовый редактор.
Создайте пакетный файл
-
1
В этой секции мы проведем вас за ручку через весь процесс создания пакетного файла. Если вы хотите сразу посмотреть на готовый скрипт, просто прокрутите вниз до соответствующей секции.
Обычно начинают командой <@echo off>, так как она предотвращает вывод выполняемых команд и, тем самым, уменьшает количество ненужной информации на экране. Наберите:
@echo off
Нажмите Enter. Нажимайте Enter после ввода каждой команды. Теперь давайте поприветствуем пользователя. Наберите:
echo Вас приветствует скрипт резервного копирования!
Не забыли нажать Enter? Отлично. Теперь выведем пустую строку, чтобы выделить заголовок. Наберите:
echo.
И снова Enter, конечно же. Теперь займемся делом. Наберите:
choice /C:FNQ /N Выберите [F] - Полное копирование или [N] - Только новых файлов. Нажмите [Q] или [CTRL-Z] для выхода.
Это дает пользователю выбор. Он может нажать F или N, или же Q или CRTL-Z, что отменит выполнение скрипта. Теперь напишем команды для каждого варианта. Наберите:
IF errorlevel 3 goto end
IF errorlevel 2 goto small_backup
IF errorlevel 1 goto full_backup
Пошла работа! Если пользователь нажмет Q, программа вернет "3" и перейдет к секции "end"(конец). Если же он нажмет N, программа вернет "2"и перейдет к секции "small_backup"(маленькое резервное копирование). И наконец, если он нажмет F, программа вернет "1" и перейдет к секции "full_backup"(полное резервное копирование). "Errorlevel" это собственно не ошибка, а просто такой способ получить ответ команды CHOICE.
#Создадим секции о которых мы говорили выше. Наберите:
:small_backup
echo.
echo.
echo Вы выбрали копирование только НОВЫХ файлов. Нажмите любую кнопку, чтобы продолжить или ctrl-z для выхода.
pause >nul
xcopy c:mydirectory d:mybackup /s/m/e
goto end
:full_backup
echo.
echo.
echo Вы выбрали копирование ВСЕХ файлов. Нажмите любую кнопку, чтобы продолжить или ctrl-z для выхода.
pause >nul
xcopy c:mydirectory d:mybackup /s/e
goto end
:end
exit
Предложение: Создайте директории, упомянутые выше, и скопируйте в них несколько тестовых файлов. Позже вы можете поменять эти имена на настоящие, Мои документы, например.
# Вот и все! В Блокноте, сохраните файл под <mybackup.bat>, а затем дважды щелкните по нему мышкой.
Полный код пакетного файла
-
1Попрактикуйтесь в копировании и вставке текста на этом коде:
@echo off echo Вас приветствует скрипт резервного копирования!
echo.
choice /C:FN /N Выберите [F] - Полное копирование или [N] - Только новых файлов. Нажмите [Q] или [CTRL-Z] для выхода.
IF errorlevel 3 goto end
IF errorlevel 2 goto small_backup
IF errorlevel 1 goto full_backup
:small_backup
echo.
echo.
echo Вы выбрали копирование только НОВЫХ файлов. Нажмите любую кнопку, чтобы продолжить или ctrl-z для выхода.
pause >nul
xcopy c:mydirectory d:mybackup /s/m/e
goto end
:full_backup
echo.
echo.
echo Вы выбрали копирование ВСЕХ файлов. Нажмите любую кнопку, чтобы продолжить или ctrl-z для выхода.
pause >nul
xcopy c:mydirectory d:mybackup /s/e
goto end
:end
exit
Краткая справка по синтаксису
- ECHO → Вывод на экран.
-
примеры:
- @echo off (отключает вывод на экран самих команд, выводится только их результат)
- echo Hello. (выводит 'Hello.' @echo off на это не действует.)
- echo. (выводит пустую линию)
- CLS → Очистка экрана.
- MKDIR → Создание директории.
-
пример:
- mkdir d:ackup (создает директорию на диске D с именем backup).
- XCOPY → Копирует файлы и папки.
-
примеры:
- xcopy c:ile.txt d:ile.txt (копирует файл с диска C на диск D).
- xcopy c:mydirectory d:mydirectory /i (параметр '/i' указывает на то, что если в пути к файлу нет расширения – это директория).
- xcopy c:my documents*.* d:ackupmy documents /s /i (параметр '/s' указывает, что нужно копировать все поддиректории).
- CHOICE → Считывает нажатую на клавиатуре клавишу (используется при создании меню).
-
пример:
- choice /C:FN /N Выберите [F] - Полное копирование или [N] - Только новых файлов. (Дает пользователю выбор).
- PAUSE → Приостанавливает выполнение пакетного файла до нажатия любой клавиши (кроме ctrl-z, эта комбинация прекращает выполнение).
-
пример:
- echo Вы выбрали копирование только НОВЫХ файлов. Нажмите любую кнопку, чтобы продолжить или ctrl-z для выхода.
pause >nul
- REM → Превращает строку в комментарий, а комментарии игнорируются при выполнении.
Советы
-
Закрытые окна: Если вы хотите, чтобы окно скрипта закрылось после его завершения, оставьте все как есть. Если же вы хотите оставить окно открытым и вводить в нем другие команды, замените команду <exit> в последней секции на <cmd> - так окно останется открытым.
-
Текущая директория: Если программа обращается к файлам в той же директории, что и она сама, то вам не нужно указывать полный путь к файлу. Т.е. если пакетный файл находиться на диске C: вы можете обращаться к c: emp просто написав: : Xcopy temp*.* d: emp /s/m
Предупреждения
- Хотя команды приведенные здесь безопасны, использование системных команд в пакетных файлах может привести к краху системы.
- Команда CHOICE не включена ни в Windows XP Home ни в Professional и ее использование приведет к преждевременном завершению скрипта
Что вам понадобится
- Текстовый редактор, например, Блокнот, или более продвинутый, например, HTML-Kit. Программы, которые включает в файл дополнительную информацию, например форматирование, не подходят (к ним относится и MS Word).
- Командная строка. Нажмите <Пуск><Выполнить>, и наберите "cmd". Или найдите ее в подменю <Стандартные> Меню Пуск.
- Несколько файлов для тестового резервного копирования. Начните с небольшой директории, с малым количеством файлов.
|