Linux & Administration

BAT-файлы

Текстовые файлы с расширением .bat, в которых записан список команд Windows, выполняемых интерпретатором cmd.exe по порядку.

Что такое BAT-файл

BAT-файл (батник, от англ. batch — «пакет») — обычный текстовый файл с расширением .bat или .cmd, внутри которого построчно записаны команды Windows. При запуске cmd.exe читает файл и выполняет команды одну за другой, как если бы вы набирали их вручную.

Смысл в одном слове — повторяемость. Всё, что вы делаете в командной строке дважды, стоит записать в батник: резервное копирование, запуск сервера, чистка временных файлов. Создать его можно в «Блокноте»: набрать команды и сохранить как script.bat, выбрав тип «Все файлы» (иначе получится script.bat.txt). Запуск — двойным кликом или из командной строки.

Простой пример

@echo off
rem Резервная копия папки проекта с датой в имени

set SOURCE=C:\projects\myapp
set BACKUP_DIR=D:\backups
set STAMP=%date:~-4%-%date:~3,2%-%date:~0,2%

if not exist "%BACKUP_DIR%" mkdir "%BACKUP_DIR%"

robocopy "%SOURCE%" "%BACKUP_DIR%\myapp-%STAMP%" /E /R:2 /W:5
if errorlevel 8 (
    echo Ошибка копирования, код %errorlevel%
    exit /b 1
)

echo Готово: %BACKUP_DIR%\myapp-%STAMP%
pause

Что здесь важно:

  • @echo off — не печатать сами команды, только их вывод. Собака в начале прячет и саму эту строку
  • rem — комментарий
  • %VAR% — подстановка переменной, set — присвоение
  • %errorlevel% — код возврата прошлой команды, 0 обычно означает успех
  • pause — «Нажмите любую клавишу»: без него окно закроется, и вы не увидите ошибку

Аргументы командной строки

@echo off
if "%~1"=="" (
    echo Использование: deploy.bat ^<имя-сервера^>
    exit /b 1
)
echo Разворачиваю на %~1

%1...%9 — позиционные аргументы, %* — все сразу. Тильда в %~1 снимает кавычки с аргумента.

.bat или .cmd

Оба выполняются одним и тем же cmd.exe, и в 99% случаев разницы нет. .bat достался в наследство от MS-DOS, .cmd появился в линейке Windows NT и ведёт себя чуть аккуратнее с кодом возврата в некоторых встроенных командах. Для нового скрипта берите .cmd, для совместимости со старыми инструкциями — .bat.

Аналоги в других системах

Windows Linux / macOS Комментарий
.bat / .cmd .sh (Bash) скрипт оболочки
@echo off #!/bin/bash служебная строка в начале
%VAR% $VAR переменная
rem # комментарий
Планировщик заданий cron, systemd-таймеры запуск по расписанию

Когда батника уже мало

Синтаксис .bat унаследован от MS-DOS и очень быстро упирается в потолок: нет нормальных функций, массивов и работы с JSON, а отложенное раскрытие переменных внутри блоков if и for требует setlocal enabledelayedexpansion и остаётся источником загадочных багов. Если скрипт перевалил за пару десятков строк или ему нужно разбирать вывод команд — переписывайте на PowerShell. Он умеет то же самое, но с объектами, функциями и обработкой ошибок.

Связанные термины

  • CMD / командная строка — интерпретатор, который выполняет батники
  • PowerShell — современная замена BAT-скриптам в Windows
  • Bash — аналог батников в Linux
  • CLI — интерфейс командной строки как понятие

Готовы запустить GPU-задачу?

Запустить GPU-сервер