Автоматизируем рутину в Windows с помощью скриптов.
На 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)MicrosoftEdgeApplicationmsedge.exe” start “” “C:Program FilesWindows NTAccessorieswordpad.exe” start “” “C:Windowssystem32services.msc”
Перед аргументом всегда добавляйте двойные кавычки (“”), иначе откроются не программы, а новые экземпляры командной строки.
Очистка временных файлов
В Windows есть папка Temp, в которой система собирает временные файлы из браузера и приложений. Если её не очищать, то со временем её размеры могут увеличиться до десятков гигабайт.
Пользователи редко чистят папку с временными файлами. Для этого надо включить отображение скрытых папок, найти директорию на диске и вручную удалять мусор. Проще автоматизировать эту задачу с помощью простого BAT-файла, который будет очищать папку Temp по клику мыши или расписанию.
Сначала вызовем команду rd с параметрами /s и /q — это полностью удалит папку с диска. Затем создадим Temp заново с помощью mkdir:
rd /s /q C:Users%USERNAME%AppDataLocalTemp mkdir C:Users%USERNAME%AppDataLocalTemp
Как запустить 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 разработчики публикуют коллекции полезных батников.