Как написать пакетный скрипт на Windows
Знаете ли вы, как использовать командную строку? Если вы это сделаете, вы можете написать командный файл. В простейшем виде пакетный файл (или пакетный сценарий) представляет собой список нескольких команд, которые выполняются при двойном щелчке файла. Пакетные файлы возвращаются в DOS, но все еще работают в современных версиях Windows.
Сценарии PowerShell и Bash могут быть более мощными, но пакетные файлы могут быть очень полезны, если вам нужно выполнить основные команды Windows.
Основы пакетного файла
Пакетный файл - это просто текстовый файл, сохраненный с расширением .bat. Вы можете написать один с помощью Блокнота или более сложного текстового редактора, такого как Notepad ++, но не используйте текстовый процессор, такой как Microsoft Word..
Давайте создадим простой командный файл. Сначала откройте Блокнот. Введите в него следующие строки:
ECHO OFF ECHO Привет, мир, пауза
Затем сохраните файл, нажав «Файл»> «Сохранить». Присвойте ему любое имя, но замените расширение .txt по умолчанию на расширение .bat..
Например, вы можете назвать это hello_world.bat
.
Теперь у вас есть командный файл с расширением .bat. Дважды щелкните по нему, чтобы запустить его. Этот конкретный пакетный файл отключает ECHO (который очищает вывод, скрывая команды от печати в приглашении, печатает текст «Hello World» на экране, а затем ждет, пока вы нажмете клавишу, прежде чем она закончится..
Если вы не добавили ПАУЗА
к файлу командный файл просто запускает свои команды и затем автоматически закрывается. В этом случае он выведет «Hello World» в окно, а затем немедленно закроет окно командной строки. Если вы хотите быстро выполнить команды, не видя вывода, вы можете опустить это. Если вы запускаете несколько команд, вы можете разместить ПАУЗА
команда между ними.
Написание более сложного пакетного файла
Создать пакетный файл принципиально просто. Единственное, что вам нужно изменить, это то, что вы вводите в блокноте. Чтобы запустить несколько команд, вы вводите каждую из них в отдельной строке, и командный файл будет запускать каждую из них по порядку..
Например, скажем, мы хотим написать пакетный файл, который запускает несколько команд диагностики сети. Мы могли бы хотеть бежать ipconfig / all
просмотреть информацию о сети, пинг google.com
чтобы увидеть, отвечают ли серверы Google, и tracert google.com
запустить трассировку на google.com и посмотреть, есть ли проблемы в пути.
В самой простой форме мы могли бы просто поместить все эти команды в пакетный файл, одну за другой, примерно так:
ipconfig / all ping google.com tracert google.com PAUSE
Когда мы запускаем этот файл, мы просто видим вывод каждой команды сразу после другой. Но это не обязательно идеальный способ написать командный файл.
Например, вы можете добавить комментарии. Любая строка, которая начинается с ::
является строкой комментария и не будет выполнена. Это делает их полезным способом объяснить, что происходит в файле, для любого, кому вы можете дать его, или для вашего будущего я, кто может забыть, почему вы положили туда определенную команду.
Вы также можете добавить команду «ECHO OFF» в начало файла. Обычно это добавляется в начало большинства командных файлов. Когда вы сделаете это, сами команды не будут напечатаны в командной строке, но результаты будут. Например, вы увидите информацию о сетевом соединении, но не строку «ipconfig / all». Большинство людей не хотят видеть команды, так что это может очистить вывод.
Вот как это может выглядеть:
:: Этот пакетный файл проверяет наличие проблем с сетевым подключением. ECHO OFF :: Просмотр сведений о сетевом подключении ipconfig / all :: Проверьте, доступен ли Google.com ping google.com :: Запустите traceroute, чтобы проверить маршрут к Google.com tracert google.com PAUSE
Есть и другие направления, по которым вы можете пойти с командным файлом, как это. Например, вы можете захотеть, чтобы ваш пакетный скрипт выполнял приведенные выше команды, а затем вывел вывод в текстовый файл, который вы можете просмотреть позже. Для этого вы должны использовать >>
Оператор после каждой команды добавляет свой вывод в текстовый файл. В любом случае, поскольку мы собираемся прочитать вывод из текстового файла, мы можем опустить ПАУЗА
команда.
:: Этот пакетный файл проверяет наличие проблем с сетевым подключением :: и сохраняет вывод в файл .txt. ECHO OFF :: Просмотр сведений о сетевом подключении ipconfig / all >> results.txt :: Проверьте, доступен ли Google.com ping google.com >> results.txt :: Запустите traceroute, чтобы проверить маршрут к Google.com tracert google. com >> results.txt
После запуска приведенного выше сценария вы найдете файл с именем results.txt в той же папке, что и командный файл с выводом команд. Окно командной строки автоматически закроется, как только будет запущен пакетный файл.
Пример, который мы используем выше, основан на фактической печати информации в командной строке, чтобы пользователь мог ее прочитать. Однако многие командные файлы предназначены для неинтерактивного запуска. Например, у вас может быть пакетный файл, который удаляет несколько файлов или каталогов при каждом двойном щелчке по нему. Вам просто нужно использовать дель
команда для удаления файлов или DELTREE
Команда для удаления каталогов. Помните, что вы просто используете те же команды, которые запускаете в окне командной строки.
По сути, это и есть смысл большинства командных файлов - просто запускать несколько команд одну за другой. Тем не менее, пакетные файлы могут быть значительно сложнее, чем это. Например, вы можете использовать операторы «IF» вместе с командой «GOTO», чтобы проверить значение чего-либо, а затем перейти к различным строкам в зависимости от результата. Это больше похоже на написание настоящей маленькой программы, чем на быстрый и грязный скрипт. Это одна из причин, почему BAT-файлы иногда называют «пакетными программами». Если вы хотите сделать что-то более сложное, вы найдете множество руководств по выполнению конкретных задач с помощью пакетного программирования в Интернете. Но теперь вы знаете основы того, как собрать простой.