Автоматизация – это просто
Как создать bat-файл? Для этого нужно выполнить следующие действия:
- В любом текстовом редакторе, например, в Notepad или WordPad, создать текстовый документ.
- Записать в нем свои команды, начиная с @echo [off], а затем (каждый раз в новой строке) – title [название пакетного скрипта], echo [сообщение, которое будет выведено на экран] и pause.
- Сохранить текст в электронном документе с расширением.bat (например, test.bat).
- Для запуска следует дважды щелкнуть по только что созданному пакетному файлу.
- Чтобы его отредактировать, необходимо кликнуть на нем правой кнопкой мыши и из контекстного меню выбрать пункт «Изменить».
Необработанный файл будет выглядеть примерно так:
@echo off
title Это ваш первый скрипт bat-файла!
echo Добро пожаловать в сценарий пакетной обработки!
pause
Более подробно о командах bat-файлов и их использовании речь пойдет ниже.
Что собой представляет BAT-файл
С точки зрения пользователя компьютера это текстовый файл с соответствующим расширением, но для операционной системы такие файлы особенные – они состоят из ряда команд, которые после запуска интерпретируются и выполняются по определённым правилам. Таким образом, ответ на вопрос, что такое батник для компьютера под управлением ОС Windows, может звучать следующим образом: это набор команд, записанный в текстовом формате, позволяющий сэкономить время на их наборе каждый раз, когда возникнет необходимость. Сленговое название таких файлов – батник, их также называют пакетными файлами.
С помощью таких батников можно автоматизировать целые классы задач:
- осуществлять управление файловой системой компьютера (удалять, создавать, перемещать файлы, каталоги, подкаталоги);
- выполнять последовательность команд с определёнными параметрами, которые могут быть контекстно-зависимыми;
- осуществлять пакетный запуск программ/утилит.
Сохранение
Вышеупомянутый скрипт выводит на экран текст «Добро пожаловать в сценарий пакетной обработки!». Электронный документ необходимо записать, выбрав пункт меню текстового редактора «Файл», «Сохранить как», а затем указать желаемое имя bat-файла. Его следует завершить расширением .bat (например, welcome.bat) и нажать «ОК». Для правильного отображения кириллицы в некоторых случаях следует удостовериться в правильном выборе кодировки. Например, при использовании консоли русифицированной системы Windows NT документ необходимо сохранить в CP866. Теперь следует дважды щелкнуть на ярлыке bat-файла, чтобы активировать его.
Но экране появится надпись:
«Добро пожаловать в сценарий пакетной обработки! Для продолжения нажмите любую клавишу…»
В случае если bat-файл не запускается, пользователи рекомендуют зайти в регистр и удалить ключ:
«HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.BAT\UserChoice».
Не стоит думать, что это все, на что способны сценарии пакетной обработки. Параметрами скриптов являются измененные версии команд командной строки, поэтому пользователь ограничен только их возможностями. А они довольно обширные.
Основные команды, примеры использования BAT-файлов
Принцип создания батников прост и понятен, но основные сложности связаны с его содержимым – без команд такой файл бесполезен. Самый простой и, кстати, наиболее часто используемый пример команды – это уже рассмотренный нами запуск программ, или команда start. Её полный синтаксис занимает несколько строк, при желании вы сможете ознакомиться с ним, отыскав соответствующие инструкции. Мы же пока рассмотрим, как можно автоматизировать простой запуск трёх программ, которые вы используете в своей ежедневной работе. Пускай это будут Chrome, VLC и Total Commander.
Создадим пакетник, который последовательно запустит все три программы с пятисекундной задержкой.
Батник будет иметь вид:
start «» «C:/Program Files/Google/Chrome/Application/chrome.exe»
timeout /t 05
start «» «C:/Program Files/VideoLAN/VLC/vlc.exe»
timeout /t 05
start «» «C:/Program Files/TotalCMD/totalcmd.exe»
Зачем нужны пустые кавычки, вы уже знаете. Команда timeout с параметром /t указывает временной интервал до запуска следующей команды.
Если бы в пути не было папок с пробелами, их можно было бы указывать без кавычек.
Стандартный способ выполнения этого BAT-файла предполагает, что при выполнении скрипта будет открыто три окна консоли, которые закроются автоматически, как только отработка команды завершится. Но существует способ запуска команд старт в одном окне терминала. Для этого сразу после директивы start добавляется параметр /b, и только затем – всё остальное.
Иногда для запуска программ через батник, требуется реакция пользователя, то есть он должен сам решать, когда должна стартовать следующая программа. В таких случаях вместо timeout ставят директиву pause без параметров, в результате чего после запуска каждой программы будет появляться сообщение «Нажмите любую клавишу для продолжения».
Ещё один интересный пример – скрипт, запуск которого приведёт к выключению или перезагрузке компьютера. Основной командой будет shutdown с параметрами, но будет и ряд вспомогательных директив, которые нужно знать, ибо они могут оказаться полезными и в других случаях.
Пример такого скрипта:
@echo off chcp 1251 echo «Вы действительно хотите выключить компьютер?» pause shutdown /s /t 0
Первая директива указывает, что при выполнении команд они не должны выводиться на экран. Со второй строкой всё понятно – мы хотим использовать кириллические символы. Команда echo служит для вывода содержимого параметра в кавычках на монитор. Действие директивы pause вам тоже известно. Наконец, команда shutdown инициирует выключение ПК (если указан параметр /s) или его перезагрузку (/r), а параметр /t задает задержку в секундах перед выполнением команды.
В принципе для выполнения основного действия достаточно пятой строки, без использования предыдущих четырёх.
Иногда, несмотря на присутствие директивы chcp 1251, кириллические символы выводятся крякозябрами. Попробуйте в таких случаях использовать кодировку ANSI.
В BAT-файлах часто используют команды, предназначенные для работы с файловой системой.
Так, команду del можно использовать для удаления папок и/или файлов, её аналогом является команда erase. Среди используемых параметров отметим следующие:
- /p – указывает, что перед удалением файла/каталога нужно ответить утвердительно на запрос системы;
- /f – удаление даже тех файлов, которые имеют атрибут «только для чтения»;
- /s – удаление каталога вместе с внутренним содержимым, всеми подкаталогами и файлами;
- /q – удалять файлы, не спрашивая подтверждения.
Очень полезная команда, позволяющая автоматизировать создание резервных копий важных каталогов посредством копирования папки в указанное место вместе со всеми подкаталогами:
robocopy C:/data E:/backup1 /e
pause
В результате выполнения команды папка data будет скопирована в каталог backup1, размещённый на другом логическом диске, вместе со всем содержимым. И у этой команды имеется множество параметров, позволяющих настраивать работу скрипта достаточно гибко.
Вычисления
В bat-файлах можно выполнять простые арифметические операции с целыми 32-битными числами и битами с помощью команды set /a. Максимальным поддерживаемым числом является 2^31-1 = 2147483647, а минимальным – -(2^31) = -2147483648. Синтаксис напоминает язык программирования Си. К арифметическим операторам относятся: *, /, %, +, -. В bat-файле % (остаток целочисленного деления) должен вводиться как “%%”.
Операторы с двоичными числами интерпретируют число как 32-битную последовательность. К ним относятся: ~ (побитовое НЕ или дополнение), & (И), | (ИЛИ), ^ (исключающее ИЛИ), << (сдвиг влево), >> (сдвиг вправо). Логическим оператором отрицания является ! (восклицательный знак). Он изменяет 0 в 1 и ненулевое значение в 0. Оператором комбинирования служит , (запятая), которая позволяет производить большее число операций в одной команде set. Комбинированные операторы присваивания += и -= в выражениях a+=b и a-=и соответствуют выражениям a=a+b и a=a-b. Так же работают и *=, %=, /=, &=, |=, ^=, >>=, <<=. Приоритет операторов следующий:
(); %+-*/; >>, <<; & ^; |; =, %=, *=, /=, +=, -=, &=, ^=, |=, <<=, >>=; ,
Литералы можно вводить в виде десятичных, шестнадцатеричных (с ведущими 0x) и восьмеричных чисел (с ведущим нулем). Например, set /a n1=0xffff присваивает n1 шестнадцатеричное значение.
Как создать файл с расширением BAT в Windows 10/8/7
Поскольку батник представляет собой обычный текстовый файл с необычным контентом, для его создания сгодится практически любой текстовый редактор. Разумеется, потребуется также знание синтаксиса языка командной строки. Использовать Word – не самый оптимальный способ, гораздо проще задействовать «Блокнот», но ещё лучше воспользоваться Notepad++, поскольку этот редактор обладает полезной «фишкой» – умеет подсвечивать синтаксис, облегчая задачу пользователям. Правда, в состав операционной система он не входит, его придётся скачивать.
В обоих случаях создание батника происходит по одинаковому сценарию: в меню «Файл» выбираем «Создать», заполняем файл содержимым, по окончании редактирования кликаем «Сохранить как», даём имя пакетному файлу, а в поле «Тип файла» указываем «Batch file».
В классическом «Блокноте» расширение необходимо написать руками, выбрав в поле «Тип файла» опцию «Все файлы».
При написании пакетных скриптов необходимо учитывать следующие нюансы:
- перенос строк в таких файлах недопустим, он будет интерпретироваться неправильно;
- правильной кодировкой будет UTF-8;
- при использовании в командах кириллических символов, кодировку следует изменить с помощью специальной команды chcp 1251;
- расширение BAT идентично CMD. Файлы, оканчивающиеся таким расширением, будут обработаны командным интерпретатором точно так же.
Есть и другие интересные моменты.
Использование длинных имён в BAT-файлах
Многие пользователи при практическом рассмотрении вопроса, как создать батник, в том числе с расширением CMD, сталкиваются с проблемой длинных имён, которые доступны в ОС Windows. Интерпретатор командной строки в этом отношении остался закоренелым ретроградом – он понимает имена файлов и каталогов в формате DOS, то есть длиной не более 8 символов. Как же решается подобная дилемма?
Один из наиболее известных способов – сокращение имени до 6 символов (исключая пробелы) и присвоение остатку окончания, состоящего из символа «тильда» (~) и цифры 1. Например, стандартное имя каталога Program Files будет выглядеть как Progra~1, папка Sound Blaster получит имя SoundB~1.
Казалось бы, вполне изящное решение. Но не во всех случаях. Скажем, у вас имеется несколько папок, начинающихся с одного имени. Типичный пример – установка в том же Program Files нескольких программных продуктов от компании Mozilla – в этом случае сокращённым именем будет Mozill, и если всем присвоить остаток ~1, то это будет неправильно. Выход – именовать файлы, присваивая номер в порядке возрастания. Получим последовательность для продуктов Firefox, Thunderbird и Sunbird в виде строк Mozill~1 для браузера, Mozill~2 для Thunderbird и Mozill~3 для органайзера.
Проблема в том, что если один из продуктов удалить, например, Firefox, оставшиеся две записи окажутся неработоспособными. Удалив Thunderbird, вы сделаете недоступным Sunbird. Наконец, такой способ позволяет дать имена лишь девяти файлам/папкам с одинаковым начальным именем. Так что подобный способ удовлетворительным назвать никак нельзя.
Второе решение – заключать длинные имена и пути в кавычки.
Кавычки в пакетных файлах
Если вы думаете, что знаете всё про то, как сделать BAT-файл, то, скорее всего ошибаетесь. Допустим, вам нужно указать один из параметров команды в кавычках. Сами кавычки синтаксисом не запрещены, но всегда нужно учитывать правила написания конкретной команды. Пускай нам нужно запустить экзешник scw.exe. Соответствующая команда, по идее, должна иметь вид
start «C:\Program Files\SoundClub\scw.exe»
Но это будет воспринято интерпретатором неправильно, поскольку в синтаксисе команды START на первом месте – необязательный параметр [«заголовок»], и только затем следует путь. Поэтому, чтобы командный интерпретатор не запутался, первый параметр обязательно указываем, даже если он не нужен – просто оставляем его пустым.
Тогда наша команда преобразится:
start «» «C:\Program Files\SoundClub\scw.exe»
Правильным также будет заключение в скобки всех наименований папок/файлов с пробелами внутри. Но встречаются ситуации, когда оба варианта не сработают. В таких случаях можно посоветовать посредством команды cd перейти в нужный каталог и работать уже в целевом. В нашем случае батник будет иметь вид:
%SystemDrive% cd \Program Files\SoundClub\ start scw.exe
Этот метод более трудоёмкий, но он гарантированно рабочий.
Как видим, создание, написание BAT-файлов даже для таких простых задач, как запуск программ в Windows, является по большому счёту искусством.
Внешние команды
- Exit используется для выхода из консоли DOS или (с опцией /b) только текущего bat-файла или подпрограммы.
- Ipconfig – это классическая консольная команда, которая выводит информацию о сети. Она включает MAC- и IP-адреса, и маски подсети.
- Ping пингует IP-адрес, отправляя к нему пакеты данных, чтобы оценить его удаленность и время ожидания (отклика). Также используется для задания паузы. Например, команда ping 127.0.01 –n 6 приостанавливает выполнение кода на 5 с.
Библиотека команд bat-файлов огромна. К счастью, в Сети есть множество страниц, в которых все они перечислены, наряду с переменными пакетного скрипта.