Что такое .bat файл?
Файл с расширением .bat - это пакетный скрипт Windows, который выполняет
последовательность команд в командной строке (CMD). Подходит для автоматизации рутинных задач:
запуск
программ, копирование файлов, очистка папок и т.д.
Как создать .bat файл
-
1. Откройте Блокнот. -
2. Напишите команды. -
3. Сохраните как "script.bat" - выберите "Все файлы" и кодировку ANSI или UTF-8. -
4. Дважды кликните - скрипт запустится.
Базовые команды в .bat
-
echo [текст]- выводит текст на экран. -
echo off- отключает отображение команд (часто пишется как@echo offв начале скрипта). -
pause- приостанавливает выполнение до нажатия клавиши. -
cls- очищает экран терминала. -
rem [комментарий]- комментарий (игнорируется интерпретатором). -
::- альтернативаrem, работает быстрее при большом количестве строк. -
exit- завершает выполнение скрипта. -
exit /b [код]- завершает выполнение подпрограммы или возвращает код ошибки. -
title [текст]- меняет заголовок окна CMD. -
color XY- устанавливает цвет фона (X) и текста (Y), например:color 0a- чёрный фон, светло-зелёный текст. -
mode con lines=30 cols=80- устанавливает размер окна консоли.
Переменные
-
set имя=значение- создаёт переменную (без пробелов вокруг=). -
echo %имя%- выводит значение переменной. -
set /p name=Введите имя:- запрашивает ввод от пользователя. -
set /a result=5+3- выполняет арифметическую операцию (поддерживает +, -, *, /, %). -
set "путь=C:\Мои файлы"- безопасное присвоение с кавычками (избегает проблем с пробелами). -
set- показывает все текущие переменные окружения. -
echo %USERNAME%- имя текущего пользователя. -
echo %USERPROFILE%- путь к домашней папке (напр. C:\Users\Иван). -
echo %CD%- текущая директория. -
echo %DATE%,echo %TIME%- текущие дата и время. -
setlocal...endlocal- ограничивает область действия переменных.
Работа с путями и окружением
-
%~dp0- путь к папке, где находится .bat файл (включая слеш в конце). Очень полезно для портабельных скриптов. -
%~n0- имя самого .bat файла без расширения. -
%1, %2, %*- аргументы, переданные в скрипт при запуске. -
shift- сдвигает аргументы: %2 становится %1, %3 → %2 и т.д. -
call :subroutine- вызов подпрограммы внутри скрипта. -
goto :label- переход к метке (например,:start).
Проверка условий и ошибок
-
if exist файл.txt (echo Есть) else (echo Нет)- проверяет существование файла. -
if not exist папка\ (mkdir папка)- создаёт папку, если её нет. -
if errorlevel 1 echo Ошибка!- проверяет код возврата предыдущей команды. -
if "%1"=="" echo Не передан аргумент & exit /b 1- проверка наличия аргумента. -
if defined VAR echo Переменная задана- проверяет, определена ли переменная.
Запуск программ и управление
-
start "" "C:\Путь\программа.exe"- запускает программу в новом окне (пустые кавычки - заглушка для заголовка). -
start /wait setup.exe- запускает и ждёт завершения (полезно в установочных скриптах). -
tasklist | findstr "chrome"- проверяет, запущен ли процесс. -
taskkill /im notepad.exe /f- принудительно завершает процесс по имени. -
net start "Служба"- запускает службу Windows. -
net stop "Служба"- останавливает службу.
Обработка аргументов
@echo off
if "%1"=="" (
echo Использование: %0 [имя_файла]
exit /b 1
)
echo Обрабатываю файл: %1
Пример: Цикл по файлам
for %%f in (*.log) do (
echo Обрабатываю: %%f
move "%%f" "Архив\"
)
Пример: Логирование
echo [%DATE% %TIME%] Скрипт запущен >> log.txt
ping ya.ru >> log.txt
if errorlevel 1 echo ОШИБКА! >> log.txt
Условия (if / else)
Пример:
if "%username%"=="Admin" (
echo Привет, администратор!
) else (
echo Привет, %username%!
)
Сравнение строк и чисел:
-
==- равно. -
NEQ- не равно. -
LSS- меньше. -
GTR- больше.
Циклы (for)
Перебор файлов:
for %%f in (*.txt) do (
echo Обрабатываю: %%f
)
Цикл по числам (PowerShell лучше, но можно):
set i=0
:loop
if %i% LSS 5 (
echo Итерация: %i%
set /a i+=1
goto loop
)
Полезные практики
-
start [программа]- запускает программу (например,start notepad.exe). -
call другой_скрипт.bat- вызывает другой .bat файл из текущего. -
timeout /t 5- пауза на 5 секунд. -
xcopy /s /y C:\src D:\backup- копирует папку с подпапками. -
del *.tmp /q- удаляет все .tmp файлы без подтверждения.
Пример: Резервное копирование
@echo off
echo Запуск резервного копирования...
xcopy "C:\Мои документы\*" "D:\Backup\" /s /e /y
echo Готово!
pause
Пример: Очистка временных файлов
@echo off
echo Очистка Temp...
del "%temp%\*" /q /s
echo Временные файлы удалены.
pause
Безопасность и советы
- Запускайте .bat файлы с осторожностью - они могут выполнять любые команды.
- Тестируйте скрипты в безопасной папке перед использованием.
- Используйте
echo onдля отладки. - Для сложных задач лучше использовать PowerShell (
.ps1). - Чтобы запустить .bat от имени администратора - правой кнопкой → "Запуск от имени администратора".
Совет: Сохраняйте свои скрипты в папке C:\Scripts и
добавьте
её в PATH, чтобы запускать из любого места.