Код
#статьи

BAT-файлы: что это такое и как с ними работать

Автоматизируем рутину в Windows с помощью скриптов.

Иллюстрация: Оля Ежак для Skillbox Media

На Windows часто возникают рутинные задачи, которые хочется автоматизировать. Например, почистить временные файлы, забэкапить важные документы или запустить одним кликом несколько приложений. Для этого есть простой инструмент — BAT-файлы (в простонародье «батники»). В этой статье научимся разрабатывать простые скрипты и запускать их по расписанию.

Эксперт

Дмитрий Зайцев

CTO Flocktory, программный директор профессии «DevOps-инженер» в Skillbox, директор программного комитета DevOpsConf.

Содержание

Как создать BAT-файл

BAT-файлы — это скрипты с набором команд, которые понимает командная строка Windows. Их можно использовать для автоматизации задач, которые часто повторяются или занимают у пользователя много времени. Такие скрипты хранятся в файлах с расширением .bat.

Для создания BAT-файла понадобится любой текстовый редактор, например стандартный «Блокнот». Давайте откроем его и напишем скрипт, который выведет в окне командной строки сообщение Hello, World!:

@echo off
echo Hello, World!
pause

Теперь нужно сохранить документ в формате .bat. Для этого выберем пункт Сохранить как в разделе меню Файл.

Скриншот: «Блокнот» / Skillbox Media

В появившемся окне можно ввести любое название файла, а конце надо обязательно добавить расширение .bat. Затем нажимаем Сохранить:

Скриншот: «Блокнот» / Skillbox Media

Если запустить получившийся файл, откроется командная строка с нашим сообщением:

Скриншот: «Командная строка» / Skillbox Media

Команды и синтаксис BAT-файла

Для разработки батников существует множество команд. Рассмотрим те, что встречаются чаще всего.

КомандаАргумент командыДействие
titleЖелаемый заголовокУстанавливает заголовок окна командной строки на желаемый
cdПуть к каталогуПереводит пользователя в каталог, указанный в пути к файлу
startКоманда или путь к файлуЗапускает указанный файл программы или выполнение команды в новом окне командной строки
mkdir или mdИмя папкиСоздаёт папку с указанным именем
copyИмена файлов и путь к папке для копированияКопирует файлы в указанный каталог
xcopyИмена файлов и путь к папке для копированияКопирует каталоги и файлы, сохраняя их структуру
moveПуть к файлу и к конечному каталогуПеремещает файлы из одной папки в другую
delПуть к папкеУдаляет файлы внутри каталога. Не трогает папки
rdПуть к папкеУдаляет папку
startПуть к файлу программыЗапускает файл программы
colorОбозначение цветаМеняет цвет фона и текста командной строки
echoТекстВыводит текст на экран командной строки
chcpОбозначение кодировкиУказывает кодировку текста. Пригодится для корректного отображения кириллицы
pauseПо окончании выполнения команд оставляет окно командной строки запущенным
exitЗавершает работу командной строки

Как объявить переменную в BAT-файле

Переменная — виртуальная ячейка с присвоенным именем, в которой хранятся данные. Это может быть текст, числа или выражения. К переменной можно обращаться по имени, чтобы использовать её содержимое или перезаписывать его.

В BAT-файлах переменная объявляется с помощью команды set. После команды надо указать уникальное имя переменной и присвоить ей значение:

@echo off
set example=Hi,user!
echo %example%
pause

Разберём строки скрипта:

  • @echo off — эта строка отключает отображение команд. Будут показаны только строки, которые начинаются с echo.
  • set example=Hi, user! — создаёт переменную с именем primer и записывает в неё строку Hi, user!.
  • echo %example% — выводит содержимое переменной на экран.
  • pause — эта команда не даёт окну закрыться сразу после выполнения скрипта, чтобы мы могли оценить результат.

Если запустить этот BAT-файл, то в командной строке появится содержимое переменной example:

Скриншот: «Командная строка» / Skillbox Media

Для записи в переменную значения выражения надо использовать флаг /a перед именем:

set /a example=5*10

Как комментировать строки
в BAT-файле

В BAT-файлах бывает очень много строк кода. Настолько много, что в них можно заблудиться, а со временем забыть логику всего скрипта. В таких случаях лучше использовать комментарии, объясняющие код. Они не отображаются при запуске и не влияют на выполнение команд.

Для создания однострочных комментариев используют команду rem или двойное двоеточие (::):

rem текст_комментария
:: текст_комментария

Например, следующий скрипт не выведет на экран строку Следующие команды выводят текст на экран:

@echo off
rem Следующие команды выводят текст на экран
set primer=Hi, user! 
echo %primer%
pause

Для больших комментариев на несколько строк можно использовать команду goto:

goto comment
===
текст_комментария
===
:comment

Обратите внимание, что после goto следует название метки — comment, она же и закрывает комментарий в конце. На самом деле можно использовать любое название метки, главное — чтобы оно было уникальным.

Примеры BAT-файлов

Разберём примеры готовых BAT-файлов для разных задач. Их можно скопировать и использовать уже сейчас.


Резервное копирование

Допустим, необходимо время от времени создавать копию всех текстовых файлов, лежащих в каталоге Документы. Чтобы не делать это каждый раз вручную, можно создать скрипт и запускать его с рабочего стола.

Батники лучше начинать с команды @echo off, чтобы избавиться от служебных строк, которые информируют о ходе выполнении скрипта. Убрав их, мы ничего не потеряем. Если нужно будет выводить текст, написанный кириллицей, то второй строчкой BAT-файла нужно указать кодировку:

chcp 65001

При каждом запуске скрипта в папке backup на диске C: будем создавать директорию с текущей датой в названии — так будет проще искать бэкапы. Для этого используем команду md с параметром %DATE%:

md "C:/backup/%DATE%"

Теперь скопируем содержимое папки «Документ» в созданную директорию. С помощью параметра %USERNAME% можно обратиться к файлам текущего пользователя, если на компьютере их несколько:

xcopy "C:/Users/%USERNAME%/Documents" "C:/backup/%DATE%"

Для экономии места будем архивировать бэкапы с помощью 7-zip. Нужно будет предварительно скачать и установить программу по инструкции на сайте разработчика.

Далее переходим в каталог с резервными копиями с помощью команды cd и вызываем 7-zip с параметром -tzip. Появится архив бэкапа в формате .zip:

cd "C:/backup/%DATA%"
"C:/Program Files/7-Zip/7z.exe" -tzip a %DATE%.zip %DATE%

Ход выполнения скрипта можно сопровождать сообщениями командной строки, чтобы пользователь узнал, когда резервное копирование завершится. Для вывода сообщений используется команда echo.

Кроме того, текст, выводящийся на экран, можно покрасить с помощью команды color, передав ей код цвета. Эту строчку лучше добавлять в начало батника.

Весь список доступных цветов приведён в таблице:

Таблица цветов для оформления скриптов
Скриншот: «Командная строка» / Skillbox Media
Так выглядит перекрашенная командная строка Windows
Скриншот: «Командная строка» / Skillbox Media

Полный текст скрипта для резервного копирования файлов:

@echo off
chcp 65001
color 03
echo Начинается процесс резервного копирования
md "C:/backup/%DATE%"
xcopy "C:/Users/%USERNAME%/Documents" "C:/backup/%DATE%"
cd "C:/backup/%DATA%"
"C:/Program Files/7-Zip/7z.exe" -tzip a %DATE%.zip %DATE%
echo Процесс завершен
pause

Запуск нескольких программ одновременно

Бывает, что для работы надо запустить одновременно несколько приложений — например, браузер, мессенджер, редактор кода и клиент Git. Этот процесс можно автоматизировать, чтобы все необходимые программы открывались по одному клику.

Исполняемые файлы запускаются командой start. В качестве аргумента ей надо передать путь к файлу на диске:

start "" "путь_к_исполняемому_файлу"

Так, чтобы открыть одновременно браузер Microsoft Edge, текстовый редактор WordPad и приложение «Службы», надо трижды вызвать команду start:

start "" "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
start "" "C:\Program Files\Windows NT\Accessories\wordpad.exe"
start "" "C:\Windows\system32\services.msc"

Перед аргументом всегда добавляйте двойные кавычки (""), иначе откроются не программы, а новые экземпляры командной строки.

Очистка временных файлов

В Windows есть папка Temp, в которой система собирает временные файлы из браузера и приложений. Если её не очищать, то со временем её размеры могут увеличиться до десятков гигабайт.

Пользователи редко чистят папку с временными файлами. Для этого надо включить отображение скрытых папок, найти директорию на диске и вручную удалять мусор. Проще автоматизировать эту задачу с помощью простого BAT-файла, который будет очищать папку Temp по клику мыши или расписанию.

Сначала вызовем команду rd с параметрами /s и /q — это полностью удалит папку с диска. Затем создадим Temp заново с помощью mkdir:

rd /s /q C:\Users\%USERNAME%\AppData\Local\Temp\
mkdir C:\Users\%USERNAME%\AppData\Local\Temp\

Как запустить BAT-файл через командную строку

Запускать BAT-файлы можно разными способами. Самый очевидный — двойной щелчок левой кнопкой мыши. Также можно делать это из командной строки или настроить автоматический запуск по расписанию.


Ручной запуск

  • Откройте окно поиска Windows. Он находится рядом с меню «Пуск».
  • Введите в строке поиска cmd и запустите инструмент «Командная строка».
Скриншот: «Командная строка» / Skillbox Media
  • В окне командной строки укажите полный путь до файла .bat и нажмите Enter.
Скриншот: «Командная строка» / Skillbox Media

Запуск BAT-файла в скрытом режиме

Батники в Windows открываются в окне командной строки, что иногда может мешать в работе. Простой скрипт на языке VBScript позволяет запускать BAT-файлы в фоновом режиме:

  • Откройте любой текстовый редактор, например «Блокнот».
  • Вставьте в новый документ код скрипта для скрытого запуска:
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "Полный_путь_до_.bat_файла" & Chr(34), 0
Set WshShell = Nothing
  • Сохраните файл, но вместо .bat укажите расширение .vbs.
  • Запустите файл, щёлкнув по нему дважды левой кнопкой мыши.

Запуск по расписанию

Если у вас есть повторяющиеся задачи, то можно настроить запуск BAT-файлов по расписанию. Для этого понадобится встроенный в Windows «Планировщик заданий».

1. Нажмите сочетание клавиш Win + R, в появившемся окне введите taskschd.msc и нажмите Enter.

Скриншот: Меню «Выполнить» / Skillbox Media

2. Откроется «Планировщик заданий». В правой части его окна нажмите Создать простую задачу.

Скриншот: «Планировщик заданий» / Skillbox Media

3. В «Мастере создания простой задачи» введите имя новой задачи и её описание. Затем нажмите Далее.

Скриншот: «Мастер создания простой задачи» / Skillbox Media

4. Выберите периодичность запуска. Доступны опции с привязкой к конкретному времени или запуску системы.

Скриншот: «Мастер создания простой задачи» / Skillbox Media

5. Введите время, в которое нужно запускать задачу.

Скриншот: «Мастер создания простой задачи» / Skillbox Media

6. Отметьте пункт Запустить программу.

Скриншот: «Мастер создания простой задачи» / Skillbox Media

7. Укажите путь до вашего BAT-файла и нажмите Готово.

Скриншот: «Мастер создания простой задачи» / Skillbox Media

Теперь батник будет запускаться с заданной периодичностью. К примеру, так можно настроить автоматическое удаление временных файлов при каждом запуске системы или создание резервной копии раз в неделю.

Что дальше

BAT-файлы — мощный инструмент для автоматизации задач на компьютерах под управлением Windows. Больше о командах можно узнать из официальной документации Microsoft, а на GitHub разработчики публикуют коллекции полезных батников.

Изучайте IT на практике — бесплатно

Курсы за 2990 0 р.

Я не знаю, с чего начать
Научитесь: Профессия Python-разработчик Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована