Команды bat файлов в windows 10

BAT-файлы, или, как их еще называют опытные пользователи, «батники» — это текстовые файлы с расширениями .bat или .cmd, которые хранят набор команд и выполняют их в терминале операционной системы. Такие файлы необходимы для автоматизации стандартной работы пользователей в Windows.

В данной статье будет подробно рассказано о всех процессах взаимодействия с bat-файлами, их работе и основных командах, которые используются в процессе создания таких файлов.

В данном разделе статьи поговорим о взаимодействии с bat-файлами. Для начала пройдемся по требованиям, которых будет достаточно для написания своего первого «батника»:

  1. Устройство с операционной системой Windows.
  2. Наличие блокнота, либо другого текстового редактора. Рекомендуем использовать редакторы с встроенной подсветкой синтаксиса — например, Notepad++.

Создание bat-файла

Перейдем к созданию bat-файла. Для этого откроем любой текстовый редактор и заполним его некоторым содержимым. В качестве примера, создадим bat-файл, который будет выводить в окне интерпретатора командной строки сообщение «Hello, user!»:

@echo off
echo Hello, user!
pause

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

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

Image6

Пример выше подходит для пользователей, которые используют блокнот в качестве текстового редактора. Если пользователь использует Notepad++, то в типе файла выбираем «Batch file», как показано на рисунке ниже.

Image1

Если вдруг пользователь сохранил файл с неправильным расширением — ничего страшного. Это можно исправить, переименовав файл и указав правильное расширение. Чтобы это сделать, необходимо включить отображения расширений во вкладке проводника «Вид».

Image5

Запуск bat-файла

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

Image3

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

Чтобы запустить интерпретатор командной строки, достаточно выполнить сочетание клавиш WIN+R, вписать в поле ввода cmd и нажать клавишу Enter. В результате откроется окно командной строки, в которое необходимо перенести нужный файл для его запуска и нажать клавишу Enter. 

Image2

После выполненных действий, «батник» начнет выполнение команд и отобразит необходимый результат, если это запланировано.

Запустим тестовый файл, который мы создавали немного ранее и посмотрим на результат.

Как видно по картинке выше, сообщение успешно отобразилось.

Настройка периодического запуска

Полезная функция при работе с bat-файлами – это возможность запускать их с некоторой периодичностью. Для реализации понадобится встроенный в Windows сервис — «Планировщик заданий».

Откроем «Планировщик заданий». Для этого используем комбинацию клавиш WIN+R и вводим taskschd.msc в поле ввода, после чего нажимаем клавишу Enter. 

Image11

В открывшемся окне планировщика выбираем в правом меню «Действия» пункт «Создать простую задачу…». После этого откроется окно «Мастер создания простой задачи», в которой пользователю будет предложено заполнить 4 вкладки:

  • Создание простой задачи. Здесь будем указывать имя и описание задачи.
  • Триггер. Данная вкладка отвечает за выбор периода (как часто будет запускаться bat-файл и в какое время).
  • Действие. Здесь необходимо выбрать запуск программы и нажать «Далее». После этого пользователь указывает путь до необходимого «батника».
  • Завершение. В данной вкладке происходит проверка всех введенных данных.

Image15

По завершении заполнения всех вкладок bat-файл добавляется в расписание Windows и будет автоматически запускаться в указанный период.

Синтаксис написания bat-файла

Ниже будут представлен список основных правил, которые нужно знать при написании bat-файла:

  • Любая команда должна быть определена с новой строки.
  • Указанные в файле команды выполняются строго по порядку, от первого к последнему. Исключением являются те случаи, когда внутри файла организован переход от одной части к другой (например goto).
  • Чтобы исключить возможные ошибки, директории указываются в кавычках.
  • |Y| указывается перед командами, которые требуют подтверждения (Например del или format).
  • Возможно указывать два типа команд: встроенные и внешние. Первые — это команды самого интерпретатора командной строки (о них мы поговорим позже). Ко второму типу относятся все возможные исполняемые файлы (расширения .EXE, .CMD или .BAT).
  • Для отключения отображения командной строки в открывшемся окне интерпретатора, после запуска «батника», используется @echo off в начале файла.

cloud

Комментирование 

Оставлять комментарии во время написания bat-файла возможно тремя способами:

  1. rem. После ее объявления указывается необходимый комментарий.
rem текст_комментария
  1. Двойное двоеточие. Работает аналогично команде rem.
:: текст_комментария
  1. goto. К ней нужен особый подход, так как она используется не только для комментирования, но и для перехода к другой части bat-файла. После объявление команды указывается метка (в примере ниже — start). 
goto start
текст_комментария
:start

Для каждого комментария должна быть объявлена своя уникальная метка.

Основные команды

Ниже в таблице представим основные команды, использующиеся при написании bat-файла, а также аргументы к ним и их описание.

Команда

Аргумент

Описание

cd

Каталог

Переход к указанному каталогу (пустой аргумент — возвращение текущей директории).

pause

Приостановка пакетного файла.

start

Путь к файлу/команда

Выполнение указанной программы либо команды в отдельном окне.

md

Каталог

Создание каталога.

copy

Исходные файлы (путь к ним) и каталог/имя, куда копировать

Копирование одного или нескольких файлов в указанный каталог.

del

Имя файла или каталога

Удаление одного или нескольких файлов.

call

Путь до файла для запуска

Запуск пакетного файла из другого.

title

Имя заголовка

Изменение заголовка окна.

move

Исходный и конечный путь к файлу/файлам

Перемещение одного файла или группы файлов из одного каталога в другой.

color

Цвет фона и текста (задается цифрой либо буквой)

Изменение цветов текста и фона.

exit

Завершение работы пакетного файла.

Это не полный список. Чтобы ознакомиться со всеми командами, достаточно написать в строке интерпретатора командной строки help, как показано на картинке ниже.

Image9

Переменные

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

Для добавления переменной существует команда set. Чтобы объявить переменную, необходимо написать в строке set, а затем ее имя и значение. Если необходимо обратиться к переменной и считать ее значение, то к имени переменной слева и справа добавляется символ %. Приведем ниже пример:

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

Учитывайте, что пробелы перед знаком равенства и после не ставятся, иначе программа не будет работать. Результат запуска «батника» из примера выше продемонстрирован на картинке ниже.

Image14

Также, при объявлении переменной можно воспользоваться флагом /a, который отвечает за присваивание переменной числа. Например:

@echo off
set /a example=2*3
echo %example%
pause

При отсутствии такого флага, переменной присваивается вся строка после знака равенства. Результат представленной выше программы продемонстрирован на картинке: 

Кроме обычных переменных существуют переменные аргумента. Данным переменным присваиваются значения, которые передаются в момент вывоза bat-файла. Выглядят они следующим образом: %1, %2, %3 и т.д. 

Приведем пример для лучшего понимания:

@echo off
@echo First argument variables - : %1
@echo Second argument variables - : %2
@echo Third argument variables - : %3
pause

Во время запуска представленного выше «батника», передадим строку «Hello, user!». Результат будет продемонстрирован на картинке ниже.

Image12

Пример bat-файла: удаление ненужных файлов

Во время работы у пользователей часто остаются ненужные файлы, которые необходимо почистить. С этой целью отлично справляется корректно написанный «батник».

Например, у пользователя во время работы появляется много файлов с расширением .txt в некотором каталоге и его подкаталогах, которые необходимо подчистить. Реализуем для этого случая простой «батник»:

@echo off
del /f /s /q C:\путь_к_каталогу\Example\*.txt

Разберем работу каждого флага:

  • /f — данный флаг позволяет удалять все возможные файлы (даже те, что открыты только для чтения).
  • /s — флаг позволяет удалять файлы не только из каталога, но и его подкаталогах.
  • /q — данный флаг убирает подтверждение удаления файлов.

Теперь создадим каталог Example и подкаталог ExampleWithTXT, а после добавим и в первый, и во второй файлы с расширением .txt, чтобы проверить работоспособность созданного выше «батника»:

mkdir Example
cd Example
mkdir ExampleWithTXT
notepad Example1.txt
notepad Example2.txt
notepad Example3.txt
cd ExampleWithTXT
copy C:\путь_к_каталогу\Example\*.txt

После выполнения всех команд будет создан тестовый каталог Example с тремя текстовыми файлами и подкаталогом ExampleWithTXT. В последний были скопированы три текстовых файла из родительского каталога.

Image8

Теперь запустим bat-файл и посмотрим на результат. Он будет представлен на картинке ниже.

Image7

Все файлы с расширением .txt были успешно удалены из каталога Example и подкаталога ExampleWithTXT.

Заключение

В инструкции был подробно описан процесс создания bat-файлов и дальнейшего взаимодействия с ними. Также были продемонстрированы основные команды и их описание. Следуя инструкции, пользователь сможет создать свой первый «батник» и успешно автоматизировать работу в операционной системе Windows.

Все о BAT файлах

   Пакетные или batch файлы это обычные текстовые файлы, содержащие наборы команд интерпритатора и имеющие расширение bat или cmd (cmd работают только в ОС семейства NT). Редактировать такие файлы можно при помощи блокнота или любого другого текстового редактора.
В этом FAQ собраны рекомендации, которые были протестированы на Windows 2000. Некоторые команды и переменные, использованные при написании примеров, отсутствуют в 9х.

Как создать batch файл?

Откройте блокнот и наберите две следующих строки:

@echo This batch file
@pause

Выберите Файл — Сохранить как, выберите Тип файла — Все файлы, в поле Имя файла введите 1.bat и сохраните его в корне диска С, например. Теперь откройте диск С и запустите файл 1.bat. На экран будет выведено две строки.

This batch file
Нажмите любую клавишу для продолжения…

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

Команды, используемые в bat файлах

 Список команд, которые можно использовать в bat файлах, можно просмотреть, введя в командной строке (Пуск — Выполнить — cmd для Windows семейтва NT или Пуск — Выполнить — command для линейки 9х) команду

help

Результат работы help — список доступных команд с краткими пояснениями к ним. Чтобы получить более подробную информацию по интересующей команде введите в командной строке help имя_команды. Например, чтобы получить подробную справку по ключам команды AT выполните следующую команду:

help AT

В результате, на экран будет выведен список ключей для запуска команды AT из bat файла.
Если bat файл исполняется под управлением Windows (не в чистом DOS-е), то из него можно запускать любые приложения или открывать файлы. Например, нужно автоматически открыть лог-файл работы bat файла по завершении его работы. Для этого достаточно включить в bat файл последней строкой следующую команду:

start имя_файла.txt

Результатом выполнения этой команды станет открытие файла имя_файла.txt, а сам bat файл завершит свою работу. Такой способ хорош, если лог-файл небольшого размера, иначе Блокнот откажется его открывать, предложив использовать WordPad. Но эта проблема так же решаема, что и будет показано в дальнейших примерах.

Как автоматизировать запуск bat файлов

 Очень часто необходимо автоматизировать запуск bat файлов для выполнения ими рутинных операций. Для запуска bat файлов по расписанию наиболее подходит Планировщик, входящий в стандартную поставку Windows. С это помощью можно очень гибко настроить запуск пакетного файла в определенные дни или часы, с определенным интервалом. Можно создать несколько расписаний и т.д.
Для локального запуска batch файлов можно пользоваться решениями от третьих фирм, благо платных и бесплатных альтернатив стандартному Планировщику великое множество.
Batch файлы так же могут использоваться как логин-скрипты в доменах. При таком их использовании они будут исполняться при каждом входе пользователя в сеть не смотря на его желание. С их помощью можно автоматизировать сбор информации о машинах или о программном обеспечении, установленном на компьютерах пользователей, принудительно менять настройки Windows, устанавливать незаметно для пользователя программное обеспечение и автоматизировать решение других задач, ручное исполнение которых заняло бы очень много времени.

Как создать файл с произвольным именем из bat файла

 Для создания файла в процессе выполнения пакетного файла используется символ перенаправления. Он выглядит так:

>

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

@echo Start file>C:\1.txt

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

set datetemp=%date:~-10%
@echo .>%SYSTEMDRIVE%\%DATETEMP%.txt

Эти две строки работают следующим образом. Сначала в памяти создаем переменную datetemp, которой присваиваем 10 символов справа налево от системной переменной DATE. Таким образом, теперь во временной переменной datetemp содержится только текущая дата. Следующией строкой перенаправляем вывод символа точка в файл, имя которого берем из переменной datetemp, а расширение txt указываем явно. Файл будет создан на системном диске компьютера, где выполняется bat файл.
При сборе администратором информации о компьютерах в сети будет удобнее добавить к имени файла имя компьютера. Это легко можно сделать при помощи следующей команды:

@echo .>C:\FolderName\%COMPUTERNAME%.txt

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

Как создать папку из bat файла

 Для создания папки используется команда MKDIR или ее сокращенный аналог MD. Для создания папки из bat файла нужно использовать следующую команду:

MD FolderName

После выполнения такой команды будет создана папка FolderName в папке, откуда запущен bat файл. Чтобы создать файл в отличном от запуска bat файла месте, например в корне диска D, используйте явное указание расположения новой папки. Команда будет выглядеть так: 

MD D:\FolderName

При создании папок можно пользоваться системными переменными. Например, можно создать в корне диска D папку с именем текущего пользователя. Для этого понадобится переменная %USERNAME%, а команда будет выглядеть следующим образом:

MD D:\%USERNAME%

Можно еще более усложнить команду и создать папку с именем текущего пользователя на системном диске его компьютера. Команда для этого будет выглядеть так:

MD %SYSTEMDRIVE%\%USERNAME%

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

set datetemp=%date:~-10%
MD %SYSTEMDRIVE%\%datetemp%

Эта конструкция работает следующим образом.
Первая команда создает в памяти переменную datetemp, которая будет уничтожена по окончании работы bat файла. То тех пор, пока bat файл не закончил свою работу есть возможность оперировать со значением этой переменной. Переменной datetemp присваивается 10 символов справа налево от системной переменной DATE, т.е. от текущей даты. Переменная DATE имеет формат Дн ДД.ММ.ГГГГ. Первые символы слева — имя дня недели и поэтому мы их отбрасываем и присваиваем временной переменной datetemp только текущую дату.
Этим не ограничивается список возможностей при создании папок. Вы можете опрерировать переменными так, как удобно Вам, создавая папки с уникальными, легко читаемыми названиями. Получить список всех переменных можно при помощи команды SET.

Как перенаправить результат выполнения команд в файл

Часто, при выполнении сложного bat файла в автоматическом режиме проверить результаты его работы бывает затруднительно по многим причинам. Поэтому проще записывать результаты работы команд batch файла в текстовый файл (лог-файл). а потом анализировать правильность работы bat файла по этому логу.
Перенаправить результат работы команд bat файла в лог-файл достаточно просто. Далее будет показано, как это можно сделать.
Создайте bat-файл следующего содержания (скопируйте эти строки в Блокнот и сохраните файл с расширением bat):

@echo off
echo Start %time%
echo Create test.txt
echo test>C:\test.txt
echo Copy Test.txt to Old_test.txt
copy C:\test.txt C:\Old_test.txt
echo Stop %time%

Первая строка отключает вывод самих команд. Таким образом, в лог-файл будут записаны только результаты их выполнения.
Вторая строка записывает в лог-файл время начала работы пакетного файла.
Третья строка записывает в лог-файл пояснение того, что следующая команда создаст файл test.txt
Команда из четвертой строки создает файл test.txt с корне диска С. Файл создается для примера. Эта команда записывает в файл C:\test.txt слово test
Пятая строка выводит в лог-файл пояснение, что следующая команда выполняет копирование файла из одного места в другое.
Команда в шестой строке копирует созданный файл C:\test.txt в файл C:\Old_test.txt, т.е. создается копия файла под новым именем.
Последняя, седьмая строка содержит команду вывода времени завершения работы пакетного файла. В сумме с записью в лог-файл времени начала работы пакетного файла эти два значения времени дают возможность оценить время работы пакетного файла.

Сохраните этот пакетный файл под именем, например, 1.bat
Предположим, что отчет о работе пакетного файла мы бы хотели хранить в отдельной папке и каждый день записывать отчет с новым именем файла, чтобы была возможность в любой из дней обратиться к логам за предыдущие дни. Причем, имя лог-фала хотелось бы иметь в виде даты работы пакетного файла. Чтобы все это реализовать создадим на диске С (например) папку с именем LOG, т.е. полный путь к ней будет выглядеть C:\LOG. Созданный пакетный файл 1.bat будем запускать следующей командой:

1.bat>C:\LOG\%date~-10%.txt

Если пакетный файл будет запускаться из Планировщика, то нужно указать полный путь с bat-файлу. Помните, что если в пути есть пробелы, то надо использовать либо кавычки, либо формат 8.3. Т.е., если путь к bat-файлу C:\Program Files\1.bat, например, то в командной строке Планировщика для запуска bat-файла нужно указать одну из следующих строк:

«C:\Program Files\1.bat»>C:\LOG\%date~-10%.txt
C:\Progra~1\1.bat>C:\LOG\%date~-10%.txt

После запуска файла 1.bat в папке C:\LOG будет создан файл с именем, равным дате запуска bat-файла, например, 13.01.2004.txt Это и будет отчет о работе пакетного файла 1.bat
Запуск bat-файла, пример которого показан в первом листинге вверху страницы, указанной выше командой, приведет к созданию лог-файла такого содержания:

Start 19:03:27,20
Create test.txt
Copy Test.txt to Old_test.txt
Скопировано файлов: 1.
Stop 19:03:27,21

Таким образом, для выполнения перенаправления результатов работы bat-файла в лог-файл нужно использовать символ перенаправления > Синтаксис таков:

Путь\ИмяФайла.bat>Путь\ИмяЛогФайла.txt

Расширение лог-файла может быть любым. При желании, отчет о выполнении пакетного задания можно оформить даже в виде страницы html (соответствующие теги могут быть выведены в лог-файл так, как выводились комментарии в примере 1.bat) и скопировать его на корпоративный сервер.

Как автоматически ответить на запрос о подтверждении

 Некоторые команды при выполнении требуют подтверждения потенциально опасного действия. Например, такие команды как format или del предварительно запросят подтверждения на дальнейшее выполнение. Если одна из этих команд выполняется в пакетном файле, то запрос на подтверждение остановит выполнение пакетного файла и он будет ожидать от пользователя выбора одного из предложенных вариантов. Причем, если результат выполнение пакетного файла перенаправлен в лог-файл, то пользователь не увидит запроса на подтверждение и batch файл будет выглядеть зависшим.
Для исправления таких неприятностей можно перенаправить нужный ответ в команду. Т.е. выполнить обратное действие для перенаправления вывода результатов работы команды в файл.
Посмотрим на примере как выглядит запрос на подтверждение потенциально опасного действия. Создадим на диске С, например, папку Folder. Создадим в ней или скопируем в нее два любых файла. Далее, откроем командную строку и выполним следующую команду:

del C:\Folder

Эта команда должна удалить все файлы из указанной папки. Но предварительно будет выдан запрос для подтверждения следующего содержания:

C:\Folder\*, Продолжить [Y(да)/N(нет)]?

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

|

Вертикальная черта говорит о том, что вместо вывода символа на экран его надо «отдать» следующей за символом команде. Проверим работу перенаправления. Выполните в командной строке следующую команду:

echo Y|del C:\Folder

На экране будет показан запрос на подтверждение удаления всех файлов в папке Folder, но уже с положительным ответом (Y). Все файлы из папки Folder будут удалены.
Будьте осторожны с этой командой.

Как отключить вывод на экран команд при выполнении пакетного файла

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

echo Testing

Эта команда выведет на экран команду echo Testing, а на следующую строку — результат ее работы, слово Testing.

@echo Testing

Эта команда выведет на экран только результат работы команды, т.е. слово Testing. Сама команда выведена не будет.
Если на протяжении выполнения всего файла выводить команды на экран не нужно, то проще первой строкой в пакетном файле написать следующую команду:

@echo off

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

Как из одного bat-файла запустить другой

 Иногда, при выполнении пакетного файла, возникает необходимость запустить другой пакетный файл. Причем, в некоторых случаях, выполнение основного пакетного файла должно быть приостановлено, пока выполняется вспомогательный файл, а в других вспомогательный файл должен работать параллельно с основным.
Для примера создадим два bat файла. Один с именем 1.bat и содержащий всего одну команду

call 2.bat

Второй с именем 2.bat и также содержащий одну команду

pause

Теперь запустим файл 1.bat Откроется окно, в котором будет предложено нажать любую клавишу для продолжения, после нажатия которой окно закроется. Таким образом, вызов из одного пакетного файла другого при помощи команды call останавливает исполнение пакетного файла до тех пор, пока не завершится выполнение пакетного файла, вызванного командой call.
В другом случае, надо запустить из bat файла либо приложение, либо другой пакетный файл, не прерывая выполнения основного пакетного файла. Такое нередко бывает нужно сделать, например, принудительно открыв лог работы пакетного файла, запланированного на ночь, чтобы с утра, пользователь мог проконтролировать правильность его выполнения. Для этого используется команда start Исправим в файле 1.bat строку на

start 2.bat

и запустим файл 1.bat Теперь открылось окно, в котором для продолжения надо нажать любую кнопку, а окно основного пакетного файла (1.bat) отработав закрылось.
Таким образом, для вызова из одного пакетного файла другого, без остановки работы первого пакетного файла, нужно применять команду start.
Рассмотренные команды start и call могут использоваться не только для запуска других пакетных файлов, но и для запуска любых приложений или открытия файлов.
Например, команда start log.txt, находящаяся в теле пакетного файла, откроет файл log.txt в Notepad без остановки работы пакетного файла.

Как отправить сообщение из bat-файла

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

net send name Message text

Где name имя машины или пользователя, которому адресуется сообщение, а Message text — текст сообщения. После выполнения этой команды пользователю name будет отправлено сообщение.
Обратите внимание на то, что при использовании в тексте сообщения кириллицы текст должен быть набран в кодировке MS-DOS (866 кодовая страница). Иначе сообщение придет в виде нечитаемых символов. Набрать текст в кодировке DOS можно при помощи любого текстового редактора, поддерживающего эту кодировку. Это может быть, например, FAR. Откройте в FAR пакетный файл на редактирование (F4) и нажмите кнопку F8. В верхней строке редактора должна быть указана кодировка DOS, а снизу, у подсказки о быстрых клавишах, у клавиши F8 должна быть надпись Win, говорящая о том, что текущая кодировка DOS и для переключения в кодировку Win надо нажать F8.

Как автоматизировать удаление файлов по типу

 Чтобы очистить диск от временных файлов можно использовать команду

del /f /s /q C:\*.tmp

Где
/f — удаляет все файлы, даже если у них установлен атрибут только чтение
/s — удаляет файлы из всех подкаталогов
/q — отключает запрос на подтверждение удаления файла
C: — диск, на котором будут найдены и удалены файлы. Можно указать не весь диск, а папку, например, C:\WinNT
*.tmp — тип файлов, которые будут удалены
Будьте аккуратны с ключем /q и типами удаляемых файлов. Команда удаляет, не спрашивая разрешения и при указании неправильного типа файлов может удалить лишнего.

Как изменить IP адрес компьютера из пакетного файла

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

netsh interface ip show address

Результат работы этой команды — отображение текущей конфигурации сетевого интерфейса. Нас интересует название интерфейса. Предположим, что он называется FASTNET.
Предположим, что нужно сменить IP адрес на 192.168.1.42, адресация в сети статическая, без использования DHCP, шлюз 192.168.1.1, маска 255.255.255.0 В этом случае, команда, которая должна быть выполнена из пакетного файла будет выглядеть следующим образом:

netsh interface ip set address name=»FASTNET» static 192.168.1.42 255.255.255.0 192.169.1.1 1

После выполнения этой команды у интерфейса FASTNET IP адрес сменится на 192.168.1.42.
Команда netsh предоставляет широкие возможности по управлению сетевыми настройками из командной строки. Для ознакомления с другими ее функциональными возможностями пользуйтесь справкой при помощи netsh /?

Как узнать имя компьютера из bat файла

 Чтобы узнать имя компьютера при выполнении bat файла (чтобы использовать это значение в дальнейшем) используйте команду

hostname

Эта команда возвращает имя компьютера, на котором она запущена.

Как переименовать файлы по маске из пакетного файла

 Иногда возникает необходимость переименовать все файлы в папке по шаблону из пакетного файла. Сделать это можно при помощи следующей команды в bat-файле:

for /f «tokens=*» %%a in (‘dir /b PATH\*.*’) do ren PATH\%%a Prefix%%a

В этой строке надо заменить PATH\ на путь к файлам, которые будут переименованы, а Prefix на те символы, которые будут добавлены к имени файла при переименовании.
Не помещайте пакетный файл в папку, где происходит переименование, иначе он будет переименован тоже. Если в папке, где происходит переименование файлов есть подпапки, то к имени подпапки также будет добавлен префикс, т.е. подпапки будут переименованы как и файлы.
Если указать определенную маску для типов файлов, которые подлежат переименованию, например, *.txt, а не *.* как в примере, то будут переименованы файлы только указанных типов. Другие файлы и папки переименовываться не будут.

Второй вариант:

set thePATH=C:\test
for %%I in (*.txt) do ren «%thePATH%\%%~nxI» «%%~nI.dat»

Как использовать в пакетном файле символ процент

Чтобы использовать символ процент (%) в пакетном файле его надо написать дважды. Например

echo 50%%

Эта команда в bat-файле выведет на экран 50%. Если же использовать команду echo 50%, то на экран будет выведено только число 50.
Учитывайте эту особенность при использовании символа % в написании пакетных файлов.

Как из пакетного файла сделать экспорт реестра

Иногда возникает необходимость сохранить в файл определенный куст (ветку) реестра со всеми параметрами в качестве бэкапа или для других целей. Сделать это из пакетного файла можно при помощи такой команды:

regedit.exe -ea C:\environment.reg «HKEY_CURRENT_USER\Environment»

Данная команда при выполнении пакетного файла выгрузит ветку HKEY_CURRENT_USER\Environment в файл C:\environment.reg Когда потребуется восстановить значения параметров в HKEY_CURRENT_USER\Environment, будет достаточно запустить файл environment.reg. Эту команду можно использовать для ежедневного бэкапа настроек программного обеспечения и системы, которые хранятся в реестре.
Не забывайте, что если в пути, по которому должен быть сохранен выходной файл или в имени ветки реестра есть пробел, то их необходимо заключить в кавычки.

Как из пакетного файла импортировать значения переменных реестра

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

regedit.exe -s C:\environment.reg

Эта команда импортирует в реестр данные из файла environment.reg без запросов на подтверждение за счет использования ключа -s.

Как из bat файла обойти проверку даты

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

set tempdate=%date:~-10%
date 01-01-04
notepad.exe
date %tempdate%

В данном примере текущая системная дата сначала сохраняется в переменной, затем (во второй строке) системная дата устанавливается на 1-е января 2004 года, а потом вызывается программа, которая проверяет системную дату. В данном примере это Блокнот. До тех пор, пока открыт Блокнот, пакетный файл находится в ожидании, не завершаясь и не переводя системную дату обратно. Как только Блокнот будет закрыт, пакетный файл продолжит свое выполнение и установит системную дату на сохраненное в переменной tempdate значение, т.е. на то, которое было до запуска пакетного файла.
Не забывайте, что если путь до файла, которым запускается программа, содержит пробелы, то его (путь) необходимо заключить в кавычки. Если путь содержит кириллицу, то при написании пакетного файла необходимо использовать текстовый редактор, поддерживающий кодировку DOS (например, FAR). В противном случае, при запуске пакетного файла будет выведено сообщение о том, что «указанный файл не является внутренней или внешней коммандой…».
Если программа проверяет текущую системную дату только при своем запуске и во время работы больше этого не делает, то пакетный файл можно модифицировать, добавив перед именем исполняемого файла программы оператор start, т.е. наш пример будет выглядеть так:

set tempdate=%date:~-10%
date 01-01-04
start notepad.exe
date %tempdate%

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

Как в bat файле дождаться появления определенного файла

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

:test
if exist c:\1.txt goto go
sleep 10
goto test
:go
notepad

Такой пакетный файл будет проверять с интервалом 10 секунд наличие в корне диска С файла 1.txt и когда файл 1.txt появится, будет выполнено действие, указанное после метки go, т.е. в этом примере будет запущен Блокнот.
Утилита sleep свободно распространяется в составе Resource Kit. Вы можете её скачать здесь.
Если файл 1.txt большого размера и копируется откуда-то, то может получится так, что пакетный файл проверит его наличие в то время, как файл еще не скопировался или занят другим приложением. В таком случае, попытка выполнить какие-то действия с файлом 1.txt приведет к ошибке. Чтобы этого не произошло пакетный файл можно модифицировать следующим образом

:test
if exist c:\1.txt goto go
sleep 10
goto test
:go
rename c:\1.txt 1.txt
if not errorlevel 0 goto go
del c:\1.txt

Когда файл 1.txt скопировался на диск С не полностью, либо занят другим приложением, попытка его переименовать вызовет ошибку и цикл будет повторяться до тех пор, пока файл не скопируется полностью либо не будет освобожден. После того, как команда rename c:\1.txt 1.txt будет выполнена без ошибки (т.е. файл свободен), то с ним можно выполнять любые действия. В последнем примере это его удаление.

Как добавить комментарии в bat-файл

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

goto start
———————————————————
Этот пакетный файл предназначен
для автоматизации рутинных операций,
выполняемых ночью для синхронизации
содержимого корпоративного ftp-сервера
с ftp-серверами филиалов
———————————————————
Пакетный файл написан 01/01/2004
Последнее исправление внесено 10/02/2004
———————————————————
И т.д.
:start

Такое написание комментария при запуске пакетного файла передаст управление сразу к команде, следующей за меткой start. За это отвечает оператор перехода goto.
Более простые комментарии можно добавить, начиная строки с команды rem или с двух двоеточий, идущих друг за другом.

rem Этот блок устанавливает соединение с удаленным сервером

:: Этот блок проверяет дату изменения файлов

Комментирование больших пакетных файлов (как, в принципе, и любого кода) — хороший тон, который значительно облегчает процесс разбора этих файлов другими людьми или самим автором по прошествии значительного времени с момента написания.

Автоматическое создание резервной копии данных

Favorite любезно поделился с нами небольшим скриптом, который автоматически создаёт архивную копию важных данных. Вот его сообщение: 

Скрипт архивирует папку файлопомойки (\\SERVER\e$ \Exchange)
и папку с данными юзеров (домашнюю Данные пользователей (\\SERVER\e$ \Departments))
Скрипт не архивирует медиафайлы, так как они занимают вагон места и их потеря у меня не критична 

rem *******************
rem задаём винты где лежат папки для архивирования и винт куда будем бэкапить
rem *******************
SET DRIVE1ST=d:
SET DRIVE2ND=e:

rem *******************
rem пароль на архив
rem *******************
SET PASSWD=qmsdhgsdfgsdfhdsfhsdhf

rem *******************
rem если копировать для надёжности куданить на сетку
rem *******************
rem SET COPYTO=\\shpakk\c$ \!backup

rem ********************
rem *** Проверим путь назначения архива
rem ********************
%DRIVE1ST%
if not exist \!backup md \!backup
if not exist \!backup\Departments md \!backup\Departments
if not exist \!backup\Exchange md \!backup\Exchange
if not exist \!backup\MEDEA_rdisk md \!backup\MEDEA_rdisk
cd \!backup

rem ******************************
rem *** Backup \\SERVER\e$ \Exchange
rem ******************************
SET DIRNAME=Exchange
SET FILENAME=SERVER_Exchange
SET SOURCEDIR=e:\Exchange
rar a -r -m5 -dh -x*.mp3 -x*.fcd -x*.avi -x*.zip -x*.rar -x*.exe -w%DRIVE2ND%\ -p%PASSWD% %DIRNAME%\%FILENAME%_new %SOURCEDIR%\*.*
if not exist %DIRNAME%\%FILENAME%_new.rar goto next2
del %DIRNAME%\%FILENAME%_old.rar
ren %DIRNAME%\%FILENAME%.rar %FILENAME%_old.rar
ren %DIRNAME%\%FILENAME%_new.rar %FILENAME%.rar
copy %DIRNAME%\%FILENAME%.rar %COPYTO%\%DIRNAME%

:next2
rem ***************************
rem *** Backup \\SERVER\e$ \Users
rem ***************************
SET DIRNAME=Departments
SET FILENAME=SERVER_Departments
SET SOURCEDIR=e:\Departments
if not exist %DIRNAME%\%FILENAME%_new.rar goto next3
del %DIRNAME%\%FILENAME%_old.rar
ren %DIRNAME%\%FILENAME%_4.rar %FILENAME%_old.rar
ren %DIRNAME%\%FILENAME%_3.rar %FILENAME%_4.rar
ren %DIRNAME%\%FILENAME%_2.rar %FILENAME%_3.rar
ren %DIRNAME%\%FILENAME%_new.rar %FILENAME%_2.rar
:next3
rem *******************
rem это если архив будет большим — кусками бить -v357888k
rem *******************
rem rar a -r -m5 -v357888k -dh -x*.mp3 -x*.fcd -x*.avi -x*.exe -w%DRIVE2ND%\ -p%PASSWD% %DIRNAME%\%FILENAME%_new %SOURCEDIR%
rem *******************
rem архивирование пошло, не берём мультимедиа файлы
rem *******************
rar a -r -dh -x*.mp3 -x*.fcd -x*.avi -x*.exe -x*.jpg -x*.tif -p%PASSWD% %DIRNAME%\%FILENAME%_new %SOURCEDIR%
goto next4

:next4
rem **********************************
rem *** Create repair disk on \\SERVER
rem **********************************
SET DIRNAME=MEDEA_rdisk
SET FILENAME=MEDEA_rdisk
SET SOURCEDIR=%windir%\repair
%windir%\system32\rdisk.exe /s-
rar a -r -m5 -dh -w%DRIVE2ND%\ -p%PASSWD% %DIRNAME%\%FILENAME%_new %SOURCEDIR%\*.*
if not exist %DIRNAME%\%FILENAME%_new.rar goto next5
del %DIRNAME%\%FILENAME%_old.rar
ren %DIRNAME%\%FILENAME%.rar %FILENAME%_old.rar
ren %DIRNAME%\%FILENAME%_new.rar %FILENAME%.rar
copy %DIRNAME%\%FILENAME%.rar %COPYTO%\%DIRNAME%

:next5

В итоге имеем 3 папки: 

Departments, в ней:
SERVER_Departments_2.rar — 2х дневной давности
SERVER_Departments_3.rar — 3х дневной давности
SERVER_Departments_4.rar — 4х дневной давности
SERVER_Departments_new.rar — НОВЫЙ
SERVER_Departments_old.rar — СТАРЫЙ 

Exchange
Так как архивируем обменник — он нам сильно то и не нужен храним только сегодняшний и вчерашний архивы
SERVER_Exchange.rar
SERVER_Exchange_old.rar 

ну и систему на всякий в папке
SERVER_rdisk
SERVER_rdisk.rar
SERVER_rdisk_old.rar

Как запретить повторный запуск приложения

Если приложение запускается bat-файлом, то отследить (и запретить) его повторный запуск можно таким образом: 

pslist.exe -e «процесс»
if %errorlevel%==1 start «» «программа» 

pslist — бесплатная утилита, которую можно скачать здесь.

Как создать папку с именем равным текущей дате

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

MD %SYSTEMDRIVE%\%date:~-10% 

Такая команда создаст в корне системного диска папку с именем равным текущей дате. Эта команда не сработает, если региональные установки отличны от русского и в разделителях даты используется слеш. В таком случае, поможет один из следующих скриптов: 

md %systemdrive%\%date:~0,2%_%date:~3,2%_%date:~6,4% 

или 

md %systemdrive%\%date:~6,4%_%date:~3,2%_%date:~0,2% 

Во втором случае, папки будут сортироваться по алфавиту. 

Как вариант, можно рассмотреть добавление к имени файла текущей даты: 

@echo off
for /F «tokens=1-4 usebackq delims=. » %%1 in (`date /t`) do set mydate=%%4.%%3.%%2
ren test.txt test%mydate%.txt 

Имя файла test.txt будет переименовано в test2005.03.05.txt

Можно ли зациклить в bat-файле выполнение команды?

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

Цикл организуется при помощи следующих команд: 

:loop
… goto loop 

Паузу можно создать при помощи любой команды. Например, при помощи ping: 

ping -n 1 -w 100000 192.168.254.254 >nul 

-n 1 — выполнить один запрос
-w 100000 — ждать ответа 100 секунд (значение указывается в миллисекундах)
192.168.254.254 — IP адрес, который заведомо не существует в локальной сети, т.е. никогда не ответит на ping
>nul — перенаправление всего вывода команды ping в никуда.

Как в bat-файле создать паузу перед выполнением следующей команды?

Паузу можно создать при помощи любой команды. Например, при помощи ping: 

ping -n 1 -w 100000 192.168.254.254 >nul 

-n 1 — выполнить один запрос
-w 100000 — ждать ответа 100 секунд (значение указывается в миллисекундах)
192.168.254.254 — IP адрес, который заведомо не существует в локальной сети, т.е. никогда не ответит на ping
>nul — перенаправление всего вывода команды ping в никуда.

Можно использовать утилиту sleep.exe из Ресурскита.

Назад

#статьи


  • 0

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

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

Филолог и технарь, пишет об IT так, что поймут даже новички. Коммерческий редактор, автор технических статей для vc.ru и «Хабра».

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

Эксперт

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

Содержание

  • Как создать BAT-файл
  • Команды и синтаксис
  • Как объявить переменную
  • Как комментировать строки
  • Примеры BAT-файлов
  • Как запустить BAT-файл через командную строку

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

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

@echo off
echo Hello, World!
pause

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Разберём примеры готовых 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-файлы можно разными способами. Самый очевидный — двойной щелчок левой кнопкой мыши. Также можно делать это из командной строки или настроить автоматический запуск по расписанию.


  • Откройте окно поиска Windows. Он находится рядом с меню «Пуск».
  • Введите в строке поиска cmd и запустите инструмент «Командная строка».

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

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

Батники в 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 в 2025 году
Попробуйте себя в разных направлениях IT и сделайте первый шаг к новой профессии на удалёнке!

Учиться бесплатно →

Нередко советы по тем или иным действиям и исправлениям в Windows 10, 8 и Windows 7 включают в себя шаги наподобие: «создайте файл .bat со следующим содержимым и запустите его». Однако, начинающий пользователь не всегда знает, как это сделать и что собой представляет такой файл.

В этой инструкции подробно о том, как создать командный файл bat, запустить его и некоторая дополнительная информация, которая, возможно, окажется полезной в контексте рассматриваемой темы.

Создание .bat файла с помощью блокнота

Первый и самый простой способ создать bat файл — использовать стандартную программу «Блокнот», присутствующую во всех актуальных версиях Windows.

Шаги по созданию будут следующими

  1. Запустите Блокнот (находится в Программы — Стандартные, в Windows 10 быстрее запустить через поиск в панели задач, если блокнота нет в меню «Пуск», запустить его можно из C:\Windows\notepad.exe).
  2. Введите в блокнот код вашего bat файла (например, скопируйте откуда-то, либо напишите свой, о некоторых командах — далее в инструкции). 
    Создание bat файла в блокноте

  3. В меню блокнота выберите «Файл» — «Сохранить как», выберите место сохранение файла, укажите имя файла с расширением .bat и, обязательно, в поле «Тип файла» установите «Все файлы». 
    Сохранение bat файла в блокноте

  4. Нажмите кнопку «Сохранить».

Примечание: если файл не сохраняется в указанное расположение, например, на диск C, с сообщение «У вас нет разрешения на сохранение файлов в этом месте», сохраните его в папку «Документы» или на рабочий стол, а затем скопируйте в нужное расположение (причина проблемы в том, что в Windows 10 для записи в некоторые папки нужны права администратора, а поскольку блокнот не был запущен от имени администратора, он не может сохранить файл в указанную папку).

Ваш файл .bat готов: если его запустить, будут автоматически выполнены все перечисленные в файле команды (при условии отсутствия ошибок и необходимости прав администратора: в некоторых случаях может потребоваться запускать файл bat от имени администратора: правый клик по файлу .bat — запустить от имени администратора в контекстном меню).

Запуск bat файла от имени администратора

Примечание: в дальнейшем, если вы захотите отредактировать созданный файл, просто нажмите по нему правой кнопкой мыши и выберите «Изменить».

Существуют и другие способы сделать bat файл, но все они сводятся к написанию команд по одной команде в строке в текстовый файл в любом текстовом редакторе (без форматирования), который затем сохраняется с расширением .bat (например, в Windows XP и 32-битной Windows 7 вы даже можете создать файл .bat в командной строке с помощью текстового редактора edit).

Если у вас включено отображение расширений файлов (изменяется в панель управления — параметры проводника — вид — скрывать расширения зарегистрированных типов файлов), то вы можете просто создать файл .txt, затем переименовать файл, установив расширение .bat.

Запуск программ в файле bat и другие базовые команды

В командном файле вы можете запускать любые программы и команды из этого списка: https://technet.microsoft.com/ru-ru/library/cc772390(v=ws.10).aspx (правда, некоторые из указанных могут отсутствовать в Windows 8 и Windows 10). Далее — лишь некоторые базовые сведения для начинающих пользователей.

Чаще всего бывают следующие задачи: запуск программы или нескольких программ из .bat файла, запуск какой-то функции (например, очистка буфера обмена, раздача Wi-Fi с ноутбука, выключение компьютера по таймеру).

Для запуска программы или программ используйте команду:

start "" путь_к_программе

Если путь содержит пробелы, возьмите весь путь в двойные кавычки, например:

start "" "C:\Program Files\program.exe"

После пути к программе можно также указать параметры, с которыми она должна запускаться, например (аналогично, если параметры запуска содержат пробелы, возьмите их в кавычки):

start "" c:\windows\notepad.exe file.txt

Примечание: в двойных кавычках после start по спецификациям должно указываться имя командного файла, отображаемое в заголовке командной строки. Это необязательный параметр, но при отсутствии этих кавычек выполнение bat файлов, содержащих кавычки в путях и параметрах может пойти неожиданным образом.

Еще одна полезная возможность — запуск другого bat файла из текущего файла, сделать это можно с помощью команды call:

call путь_к_файлу_bat параметры

Переданные параметры при запуске можно прочитать внутри другого bat файла, например, мы вызываем файл с параметрами:

call file2.bat параметр1 параметр2 параметр3

В file2.bat можно прочесть эти параметры и использовать в качестве путей, параметров для запуска других программ таким образом:

echo %1
echo %2
echo %3
pause

Т.е. для каждого параметра мы используем его порядковый номер со знаком процента. Результатом в приведенном примере будет вывод в окно команд всех переданных параметров (команда echo используется для вывода текста в окно консоли).

По умолчанию, окно команд закрывается сразу после выполнения всех команд. Если нужно прочитать информацию внутри окна, используйте команду pause — она остановит выполнение команд (или закрытие окна) до нажатия любой клавиши в консоли со стороны пользователя.

Иногда, перед выполнением очередной команды нужно подождать некоторое время (например, до полного запуска первой программы). Для этого можно использовать команду:

timeout /t время_в_секундах

При желании, вы можете запустить программу в свернутом виде или развернутом видео с помощью параметров MIN и MAX перед указанием самой программы, например:

start "" /MIN c:\windows\notepad.exe

Для закрытия окна команд после выполнения всех команд (хотя, обычно оно и так закрывается при использовании start для запуска), используйте команду exit в последней строке. В случае, если консоль все равно не закрывается после запуска программы, попробуйте использовать такую команду:

cmd /c start /b "" путь_к_программе параметры

Примечание: в данном команде, если пути к программе или параметры содержат пробелы, могут быть проблемы с запуском, которые можно решить так:

cmd /c start "" /d "путь_к_папке_с_пробелами" /b имя_файла_программы "параметры_с_пробелами"

Как уже было отмечено, это лишь очень базовые сведение о наиболее часто используемых командах в bat файлах. При необходимости выполнить дополнительные задачи, попробуйте найти нужную информацию в интернете (поищите, например, «сделать что-то в командной строке» и используйте эти же команды в файле .bat) или задайте вопрос в комментариях, я постараюсь помочь.

Что важно запомнить

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

Отметим, что файлы с расширением .bat будут корректно обработаны как относительно новым интерпретатором CMD.EXE, так и «старичком» COMMAND.COM. А с расширением .cmd — окажутся по зубам только CMD.EXE.

Обзор BAT-файлов и их предназначения

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

BAT-файлы сильно упрощают ежедневную работу в Windows, позволяя…

  • …забыть о выполнении скучных рутинных задач типа создания бэкапов, переименования и удаления. Все, что для этого потребуется — прописать простой скрипт с рядом простых команд.

  • …больше не контролировать исполнение скриптов. С BAT-файлами можно создавать и активировать многокомпонентные наборы команд — даже десятки и сотни их будут аккуратно выполняться в заданном порядке без участия пользователя.

  • …не заниматься ручной настройкой системы. Все механические действия, которые нужно выполнять, чтобы не утонуть в океане технического «мусора» Windows — например, временных и ненужных файлов, поврежденных ключей и ярлыков — можно делегировать «батникам». Таким образом текстовые скрипты избавят вас от необходимости регулярной настройки целого ряда системных параметров системы.

Пишем BAT-файл

Перечень того, что нужно для написания BAT-файла, состоит всего из двух компонентов. Это:

  • компьютер на Windows;

  • любой текстовый редактор: подойдет как бесхитростный «Блокнот», так и Notepad++ или другой редактор с возможностью подсветки синтаксиса — с такими программами управлять длинным списком команд будет проще.

Создание BAT-файла с нуля

С теорией разобрались, идем к практике — пишем простейший «батник». Он позволит вывести сообщение «Hello!» в интерпретатор Windows.

Введем скрипт «Блокноте»:

img

Скрипт для вывода текстового сообщения

Получившийся скрипт сохраним с расширением .bat: в верхнем горизонтальном меню выберем вкладку «Файл», нажмем «Сохранить как…» и дадим название:

img

Процесс сохранения с расширением .bat

Готово! При запуске в командном процессоре будет отображаться сообщение «Hello!»:

img

Сообщение «Hello!», запущенное интерпретатором Windows

Запуск BAT-файла

Проще всего стартануть BAT-файл, два раза кликнув по нему левой кнопкой мыши. Но есть и другие способы. Например, можно нажать на иконку файла правой кнопкой мыши и выбрать «Открыть» или «Запуск от имени администратора» — это пригодится, если нужный «батник» открывается только при наличии у пользователя расширенных прав.

img

Запуск от имени администратора

Описанные выше способы подойдут, если при запуске «батника» не требуется ответ. Другое дело, когда по итогу выполнения ожидается какое-либо сообщение от системы или числовой результат. В этом случае нужно:

  • перейти в командную строку Windows — набрать сочетание клавиш WIN+R и ввести cmd;

  • зайти в папку с нужным файлом и выполнить его.

Настройка периодического запуска

«Батники» очень полезны в создании периодических задач. Для того чтобы настроить их активацию, нужно использовать встроенный «Планировщик заданий» Windows.

Чтобы использовать «Планировщик», введем комбинацию WIN+R, добавим taskschd.msc и нажмем Enter. Увидим следующее:

img

«Планировщик заданий» Windows

Дальше в горизонтальном меню выберем «Действия» и перейдем во вкладку «Создать простую задачу…».

img

Окно создания периодического запуска скрипта в «Планировщике заданий»

В открывшемся окне можно будет настроить условия выполнения задачи:

  • назвать и описать ее;

  • настроить регулярность;

  • выбрать «Запуск», «Отправка» или «Вывод сообщения» в качестве действия;

  • проверить все настройки и активировать собранный скрипт.

Команды и синтаксис

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

→ Важно понять: командный интерпретатор всегда работает последовательно, запуская команды по очереди, строка за строкой. Исключение лишь одно: GOTO отправит интерпретатор к указанной строке, с которой он вновь начнет выполнять задачи сверху вниз.

Есть несколько ключевых положений, которые помогут при работе с BAT-файлами:

  • Правило 1. Все команды начинаются с новой строки.

  • Правило 2. Использовать можно встроенные и внешние команды.

  • Правило 3. Директории важно указывать в кавычках — так при выполнении скриптов не возникнет ошибок.

  • Правило 4. Если команде нужно подтверждение, можно поставить перед ней ключ /-Y.

  • Правило 5. Чтобы просто запустить команду — без вывода сообщений об отображении в консоль — следует добавить @echo off в начало.

Основные команды

Интерпретатор Windows может обрабатывать команды двух типов:

  • Внешние. Ими могут быть любые файлы с расширениями .exe, .cmd или .bat, которые есть в операционной системе.

  • Встроенные. Те команды, которые добавлены в функциональность интерпретатора изначально.

Вот несколько примеров часто используемых встроенных команд:

img

Ключевые команды

Объявление переменных

Код внутри BAT-файлов содержит множество динамических элементов, которые могут меняться, не нарушая логику «батника». Существует целый список переменных сред — текстовых переменных Windows, хранящих данные о ряде настроек системы. Они задаются в виде %значение%: например, %USERNAME%, %COMPUTERNAME%, %DATE%, %TIME%. Чтобы их устанавливать, удалять или просматривать используется команда set.

Чтобы объявить переменную с помощью set нужно ввести следующий текст:

img

Пример того, как объявить переменную с помощью команды set

Чтобы понять принцип работы скрипта с переменной, давайте разберем каждую строку по очереди:

  • @echo off отключает вывод команд: благодаря ей мы видим только добавленный нами текст;

  • set example=Hello! создает саму переменную и записывает в нее текст (важно не ставить пробелы перед знаком равенства — с ними скрипт не сработает);

  • echo %example% выводит значение на экран;

  • pause удерживает интерпретатор открытым.

Вот, что мы увидим в результате:

img

Что получится при запуске

Числовая переменная добавляется в скрипт с помощью флага /a:

img

Написание скрипта с цифровой переменной и результат его выполнения

Комментирование строк

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

Чтобы добавить комментарий, можно использовать либо двойное двоеточие — ::, либо команду rem:

img

Таким образом можно добавить текстовый комментарий

А если вы хотите добавить комментарий в несколько строк, нужно использовать команду goto:

img

Пример добавления большого комментария

Примеры использования

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

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

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

  • Шаг 1. Первым делом пишем в приложении «Блокнот» команду @echo off — она скроет технические строки о ходе выполнения скрипта.

  • Шаг 2. Если хотим вывести русскоязычный текст, то второй строкой вводим chcp 65001.

  • Шаг 3. Далее добавляем md с директорией — md: «C:/backup/%DATE%». Благодаря этой команде в указанной папке будет легко найти нужный бэкап по дате создания.

  • Шаг 4. Теперь копируем содержимое папки «Документы» с помощью параметра %USERNAME%: xcopy “C:/Users/%USERNAME%/Documents» “C:/backup/%DATE%”.

  • Шаг 5. Далее скачиваем и устанавливаем программу для архивации бэкапов 7-zip, вводим cd и переходим к ней с помощью параметра -tzip: cd “C:/backup/%DATA%» «C:/Program Files/7-Zip/7z.exe» -tzip a %DATE%.zip %DATE%.

Дополнительно добавляем в командную строку уведомления с помощью команды echo — они будут сообщать нам о начале и завершении выполнения скрипта.

В итоге получаем такой скрипт:

img

Скрипт для автоматизированного создания бэкапов

Одновременный запуск нескольких программ

Иногда при работе в ОС Windows нужно запустить несколько приложений одновременно. Для этого можно написать файл со start в сочетании с путем к указанному файлу.

Например, чтобы одновременно запустить браузер Google Chrome, текстовый редактор «Блокнот» и приложение «Службы», нужно ввести такой скрипт:

img

Скрипт для одновременного запуска нескольких приложений

→ Двойные кавычки в этом скрипте нужны, чтобы открыть сами приложения, а не новые экземпляры командной строки.

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

С помощью BAT-скриптов можно автоматически очищать папку с временными файлами Temp — по клику или расписанию. Для этого:

  • сперва удаляем папку Temp с диска через команду rd с параметрами /s и /q;

  • затем создаем Temp заново с помощью mkdir.

img

Скрипт для удаления временных файлов

Обновление IP-адреса

Чтобы вручную обновить IP-адреса в сетевом интерфейсе, проще всего воспользоваться командой ipconfig /renew. Однако при ее выполнении будет отражен длинный вывод. Чтобы перенести его в отдельный текстовый файл, можно использовать rem — она отключает выполнение текущей команды — и указать нужный путь:

img

Скрипт для обновления IP-адреса

Переименование и удаление

Переименовывать файлы можно через команду rename.

img

Скрипт для переименования

При использовании rename важно учитывать, что:

  • автоматическое переименование допустимо только в рамках одного диска или каталога;

  • переименовывать можно только по маске.

В том случае, если вам нужно удалить с компьютера ненужные файлы, вы также можете воспользоваться «батником». Для этого добавьте в «Блокнот» такие строки:

img

Скрипт для удаления

Советы по использованию BAT-файлов

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

Совместимость с разными версиями Windows

Несмотря на то, что «батники» используются более 40 лет и появились еще при MS-DOS, новые функции в них всегда добавлялись с сохранением обратной совместимости. Например, командный интерпретатор CMD.EXE, добавленный в системы семейства Windows NT — от Windows 2000 и далее — до сих пор поддерживает запросы к файлам и каталогам, созданным по правилам изначального интерпретатора COMMAND.COM.

Настройка BAT-файлов для работы с облачными сервисами и серверами

BAT-скрипты можно использовать для оптимизации работы с облачными сервисами. Принцип такой же, как и при работе с внутренними приложениями Windows. Например, в облаке Cloud.ru с помощью BAT-файла можно заскриптовать копирование бэкапов в объектное хранилище S3.

Заключение

Пользователи операционной сети Microsoft Windows продолжают использовать BAT-скрипты каждый день. Они позволяют не тратить время на ручное выполнение рутинных задач типа чистки временных файлов или создания бэкапов.

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

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

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Windows echo to file
  • Windows 7 начальная oem
  • Отключение проверки цифровой подписи драйвера на windows 10
  • Как вернуть реестр в первоначальное состояние на windows 10 без резервной копии
  • Listbox c windows forms