Как выполнить bat файл. Как создать файл с расширением bat? Для чего предназначены такие файлы. Переходы в bat-файлах

  • 21.04.2019

В этой статье рассмотрим два способа создания bat-файла: с помощью Проводника и с помощью Блокнота. Этого будет достаточно, чтобы создавать новые bat-файлы, но сперва определимся, для чего они нужны. Если совсем просто, то bat-файл нужен для того, чтобы один раз записать набор команд для командной строки Windows , а затем выполнять их в любое время не набирая каждый раз. В общем, идеальный вариант для ленивых и/или системных администраторов. =)

Сразу перейду к делу:

Способ первый . Создаём bat-файл в «Проводнике »

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

Меняем его расширение (то, что после последней точки) на.bat:

После того, как нажмём на Enter, Windows поинтересуется «После изменения расширения этот файл может оказаться недоступным. Выполнить изменение?». Ну конечно «Да»! Именно этого мы и добиваемся: сменить расширение.txt на.bat:

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

Способ второй . Создаём bat-файл в «Блокноте »

Чтобы создать bat-файл с помощью «Блокнота », нужно открыть «Блокнот» (или любой текстовый файл в «Блокноте») и воспользоваться меню «Файл », опция «»:

Откроется окно сохранения файла. Тут важно учесть 2 вещи:

  1. «Тип файла » должен быть выставлен на Все файлы (*.*)
  2. «Имя файла » должно иметь расширение.bat

Смотрим, куда сохраняем (чтобы потом найти) и жмём кнопку «Сохранить »:

Итого:

Любой их этих способов имеет смысл, если есть права администратора. Но первый требует дополнительных настроек (которые я рекомендую всё-таки поменять и применить).

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

В статье рассмотрены три метода создания.bat файлов:

  1. С помощью командной строки.
  2. С помощью программы «Блокнот».
  3. С помощью утилиты «Dr.Batcher».

Шаг 1. Для запуска командной строки в меню «Пуск» используйте диалог «Найти программы и файлы» Вы должны задать параметр поиска cmd и кликнуть левой кнопкой мыши по пиктограмме в разделе «Программы».

Шаг 2. Для хранения написанных батников рекомендуется использовать отдельную директорию, поэтому выберите место на Вашем жестком диске и создайте специальную папку, путем ввода команды «MD D:\Bat».

На заметку! Команда вводится без кавычек, пробел ставится только после использования MD. В описываемом случае папка с именем « Bat» будет создана на диске D. Командная строка нечувствительна к регистру, то есть результат выполнения «MD D:\ Bat», « md D:\ Bat» и « md d:\ Bat» будет одинаков.

Шаг 3. Создайте собственно батник командой «@echo off > D:\Bat\probnik.bat».

На заметку! В данном случае регистр важен при указании пути размещения, то есть папки « bat», « Bat» и « BAT» – три независимые и абсолютно разные директории. При указании на несуществующую папку, команда не будет выполнена. Учтите, сообщения об ошибке тоже не будет.

Шаг 4. Для изменения содержимого файла следует открыть место его хранения, вызвать контекстное меню и выбрать строку «Изменить».

Создание пакетного файла с помощью программы «Блокнот»

Шаг 1. Для запуска блокнота войдите в меню «Все программы», пункт «Стандартные» и щелкните по запускающей пиктограмме.

Шаг 2.

Узнайте, как создать файл без больших познаний в программировании, из новой статьи —

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

« @echo off

mode con cols=32 lines=50

title star!

for %%i in (

88888888888888881888888888888888,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,

) do echo %%i

pause > nul

Внимание! Код должен вводиться без кавычек. Всегда проверяйте синтаксис написания команд. Если Вы забудете поставить запятую в конце какой-либо строки, то при выполнении программы она сольется с последующей.

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

Создание пакетного файла с помощью утилиты « Dr. Batcher»

Указанный программный продукт является платным, но предоставляет возможность использовать тестовую версию в течение 30 дней.

Шаг 1. Для создания файла воспользуйтесь меню «File», пункт «New…» или комбинацией клавиш «Ctrl+N».

Шаг 2. В диалоговом окне отметьте «Empty Batch File» и нажмите «ОК».

Шаг 3. Укажите, какие команды должен выполнять bat файл.

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

Шаг 4. Сохраните получившийся файл в нужную директорию.

Важно! Обратите внимание, что указанная утилита позволяет производить отладку программы «на лету». Достаточно воспользоваться меню « Batch», чтобы произвести запуск уже введенной последовательности. Ход выполнения отображается в нижнем фрейме. При использовании пункта « Execute in External Window…» будет произведено выполнение пакетного файла, аналогичный его запуску средствами операционной системы.

Заключение

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

Сведения\НаименованиеКомандная строкаБлокнотDr.Batcher
ЛицензияПоставка с WindowsПоставка с WindowsПлатная
Русский языкВ зависимости от версии WindowsВ зависимости от версии
Создание пакетного файлаДаДаДа
Редактирование пакетного файлаНет ДаДа
Удобство интерфейса (от 1 до 5)4 4 5

Видео — Создание Бат файла

Пакетный (bat) файл – это тип файла, поддерживающий текст, имеющий расширение.bat, и включающий в себя построчные операторы для командной строки cmd.exe.

Этот тип файла – полезный инструмент автоматизации однообразных файловых операций – копирования, удаления и т.д., а также запуска различных приложений и выполнения других операций в ОС.

К примеру, если необходимо выполнить DOS-команду ipconfig/flushdns, очищающую кэш распознавателя DNS, это можно сделать через запуск cmd.exe. Однако, если процедуру нужно повторить многократно, лучше сделать это через запуск предварительно созданного bat-файла.

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


Для этого:

  1. Открыть «Блокнот», набрав в строке поиска панели задач (изображение лупы внизу слева) слово блокнот и щелкнув мышью по всплывшей пиктограмме.

  2. Вписать в блокноте команды ipconfig /flushdns и pause.

    Справка! Использование оператора «pause» не позволяет DOS-экрану закрыться после исполнения bat-файла, чтобы у пользователя была возможность видеть ответ интерпретатора cmd.

  3. В окне блокнота щелкнуть мышью «Файл» – «Сохранить как».

  4. В окне «Сохранить как» щелкнуть слева, куда поместить файл, написать имя создаваемого файла и указать расширение.bat (через точку) (1), выбрав в «Тип файла» – «Все файлы» (2). Затем нажать «Сохранить» (3).

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

Результат исполнения bat-файла отобразиться в DOS-окне.

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

Если вы хотите более подробно узнать, а также рассмотреть инструкцию по созданию, вы можете прочитать статью об этом на нашем портале.

Основные операторы bat-файла:

  • ECHO: отображает текст в DOS-окне;
  • ECHO OFF: отменяет показ текста команд в DOS-окне, показывая подсказку и выполненный результат;
  • @ECHO OFF: отменяет показ текста команд и подсказок, показывая выполненный результат;
  • XCOPY: используется для копирования каталогов и файлов с добавочными параметрами;
  • START: запускает исполняемый файл.exe со своим стандартным приложением, открывает каталог;
  • FOR/IN/DO: применяется для указания файлов;
  • MKDIR: создает каталоги;
  • REM: для ввода строки комментария в программе;
  • RMDIR: для удаления каталогов;
  • DEL: для удаления файлов;
  • COPY: для копирования файлов;
  • TITLE: редактирование заголовка окна.

Применение некоторых из перечисленных команд показано на примере ниже. Необходимо отметить, что команда @echo off скрывает путь выполняемой команды, отображаемый cmd на DOS-экране.

Запуск программ в файле bat происходит с помощью команды start и указанием имени запускаемой программы.

Также в файле может быть прописан полный путь до исполняемого файла.

Обе эти записи для firefox работают корректно. Однако, они обе корректны только для зарегистрированных в Windows приложений. Если попробовать запустить портативную программу (например, filezilla) без прописи всего пути к запускаемому файлу, она не запустится.

Длинные имена в bat-файлах

Иногда в bat встречаются программы, не работающие с длинными именами с пробелами – обычно это некоторые старые программы для MS-DOS. В этих случаях помогает использование коротких DOS-имен без пробелов, а также кавычек.

Правила записи коротких DOS-имен (формат 8.3): задействуется шесть начальных символов имени папки, не учитывая пробелы, далее указывается ее номер по порядку через ~. Например: start C:Program FilesMozilla Firefox firefox.exe преобразуется в: start C:Progra~1Mozill~1firefox.exe.

Возможна ситуация, когда в одном каталоге имеются несколько папок с одинаковыми символами в названии.

Их короткие имена в этом случае должны нумероваться в соответствии с алфавитным порядком папок:

  • Mozill~1;
  • Mozill~2;
  • Mozill~3.

Однако, если Mozilla Firefox будет удален с компьютера, следующие за Mozill~1 записи работать не будут. Поэтому, короткие DOS-имена – не лучший вариант решения проблемы длинных имен. Создание имен этого типа на NTFS также бывает отключено в реестре Windows.

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

Однако, в некоторых случаях кавычки не работают совсем. В этом случае возможно использование команды изменения текущего рабочего каталога Chdir (CD). Запись start firefox.exe приобретает в этом случае следующий рабочий вид.

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

Программы в bat-файле можно не только запускать, но и устанавливать им дополнительные команды (ключи) запуска. Например, если запустить bat-файл с записью: start /?, он отобразит на DOS-экране список используемых с этим оператором ключей с необходимыми пояснениями.

Пример используемых ключей, где: — minimize – ключ для минимизации программы после ее запуска, — hide_splash – ключ для сворачивания программы в трэй.

Справка! Все, что относится к запускаемым файлам.exe, записывается с ними в файле bat в общей строке.

Команда создания папки выполняется в bat с помощью оператора MKDIR (MD). Если запустить приведенный в примере bat-файл, он создаст четыре вложенные папки на диске С.

Следующий пример – как открыть не один, а сразу несколько каталогов на диске С.

В приведенном ниже примере показано, как скопировать папку с диска D: на диск E. Параметр /s разрешает копирование каталогов и подкаталогов. Параметр i/ создает новый каталог, чтобы команда xcopy скопировала в него файлы.

Базовый файл при этом как остается как на диске D, так и копируется в новое место, указанное в bat-файле.

Редактирование bat


Программы редактирования

Рядовому пользователю для взаимодействия с bat-файлами, возможно, хватит функционала простого «Блокнота», но, к примеру, системному администратору нужен редактор помощнее. Работать с bat можно в любых редакторах текстов, нацеленных на взаимодействие с кодом, в частности, в «Notepad++» или «Notepad2».

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

Видео — Как создать bat файл в Windows 10

В этой статье:

  • Определение переменных
  • Переменные командной строки (параметры вызова bat-файла)
  • Оператор условия IF
  • Функции
  • Использование возвращаемых значений (обработка кода завершения программы)

Определение переменных

SET <Имяпеременной>=<Значениепеременной>

Оператор SET представляет собой расширение возможностей работы с параметрами в операционной системе. Он задает переменную, значение которой подставляется вместо ее имени при любом использовании этого имени между знаками процента. Так, если задано (переменная, которую требуют многие игры, использующие звуковую карту компьютера):

SET BLASTER=A220 I5 D1 P330

то при использовании в пакетном файле следующей конструкции:

ECHO %BLASTER%

на экран будет выведено "A220 I5 D1 P330". Переменные, определенные с помощью оператора SET называются переменными окружения среды (environment) и являются видимыми после выполнения до перезапуска DOS (если не изменять ее вручную в памяти). То есть, ее можно использовать из одного пакетного файла или программы после задания в другом. Наиболее известной является переменная PATH, представляющая собой набор путей для быстрого поиска файлов. Она задается в файле autoexec.bat.

Переменные командной строки
(параметры вызова bat-файла)

%<цифра 0-9>

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

Всего может быть 10 одновременно существующих независимых переменных. Для написания сложных программ это довольно мало, хотя для обычной работы часто хватает и 3-4. Значение переменной равно значению соответствующего параметра из командной строки. Переменная %0 будет содержать имя.bat-файла и, если вы указали, путь к нему. То есть, если вы запустили файл abc.bat со следующими параметрами:

abc.bat a bc def

то переменная %0 будет содержать значение abc.bat , %1 будет содержать значение a, %2 будет содержать bc , а %3 - def . Это свойство широко используется для создания универсальных пакетных файлов при работе с повторяющимися операциями.

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

Команда SHIFT позволяет использовать число параметров командной строки далее 10. Однако, при этом теряются соответственно более ранние параметры. Иными словами, команда SHIFT сдвигает все значения переменных на один шаг влево. То есть, переменная %0 будет содержать значение, содержавшееся до этого в переменной %1 , а переменная %1 - значение переменной %2 до сдвига. Однако, данная операция является необратимой, то есть, невозможно сдвинуть переменные обратно.

Оператор условия IF

К счастью, командный интерпретатор cmd.exe современных ОС Windows 2000 и старше поддерживает блоки команд в конструкциях ветвления, что устраняет необходимость применения IF с метками. Блоки команд заключаются в круглые скобки. Выглядит это так (имитируя C/C++ indentation style):

if condition (

Rem Команды ветки ‘then’

Rem ...

) else (

Rem Команды ветки ‘else’

Rem ...

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

@echo off

set BUILDMODE=%1

if "%BUILDMODE%" == "" (

Echo FAIL: Аргумент является обязательным ^(--debug, --release^)

Exit /b 1

rem Удаляем из аргумента все дефисы для упрощения обработки

set BUILDMODE=%BUILDMODE:-=%

if "%BUILDMODE%" == "debug" (

Set CCFLAGS=/Od /MDd /Z7

) else (

Set CCFLAGS=/O2 /MD

На мой взгляд, с этим уже вполне можно жить. Но, как всегда, жизнь не так проста, как кажется. Есть одна проблема. Переменные, использующиеся в блоках then и else, раскрываются перед началом выполнения этих блоков, а не в процессе выполнения. В приведенном примере это не вызывает никаких проблем, однако в следующем вызовет:

if "%BUILDMODE%" == "debug" (

Echo INFO: Устанавливаем debug-режим окружения

Set OPTFLAGS=/Od

Set CCFLAGS=%OPTFLAGS% /MDd /Z7

) else (

Echo INFO: Устанавливаем release-режим окружения

Set OPTFLAGS=/O2

Set CCFLAGS=%OPTFLAGS% /MD

Загвоздка в том, что в обоих блоках подстановка переменной OPTFLAGS произойдет до того, как она будет изменена в процессе выполнения этого блока. Соответственно, в CCFLAGS будет подставлено то значение, которое OPTFLAGS имела на момент начала выполнения данного if-блока.

Решается эта проблема путем использования отложенного раскрытия переменных. Переменные, заключенные в !…! вместо %…% , будут раскрыты в их значения только в момент непосредственного использования. Данный режим по умолчанию отключен. Включить его можно либо использованием ключа /V:ON при вызове cmd.exe , либо использованием команды:

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

С учетом сказанного предыдущий «неправильный» пример может быть исправлен так:

setlocal enabledelayedexpansion

if "%BUILDMODE%" == "debug" (

Echo INFO: Setting up debug mode environment

Set OPTFLAGS=/Od

Set CCFLAGS=!OPTFLAGS! /MDd /Z7

) else (

Echo INFO: Setting up release mode environment

Set OPTFLAGS=/O2

Set CCFLAGS=!OPTFLAGS! /MD

Вот теперь это почти полноценный if-then-else блок. Почти, потому что если в одной из команд echo у вас встретится закрывающая круглая скобка, то вам необходимо заэкранировать ее символом ^, иначе синтаксический анализатор путается…

Но в любом случае, это гораздо лучше безумного количества меток и переходов.

Функции

А можно создать в bat-файле функцию? Да, можно. Более того, иногда даже нужно. Правда, функциями это можно назвать условно.

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

call:метка аргументы

Возврат из функции производится командой:

exit /b [опциональный код возврата]

Ключ /b здесь очень важен: без него будет произведен выход не из функции, а из сценария вообще.

За подробностями наберите в командной строке:

call /?

exit /?

Что интересно, команда call с таким синтаксисом поддерживает рекурсивные вызовы с автоматическим созданием нового фрейма для переменных аргументов %0-%9. Иногда это может быть полезным. Вот классический пример рекурсивного подсчета факториала на командном языке:

@echo off

call:factorial %1

echo %RESULT%

exit

rem Функция для подсчета значения факториала

rem Вход:

rem %1 Число, для которого необходимо подсчитать факториал

rem Выход:

rem %RESULT% Значение факториала

:factorial

if %1 == 0 (

Set RESULT=1

Exit /b

if %1 == 1 (

Set RESULT=1

Exit /b

set /a PARAM=%1 - 1

call:factorial %PARAM%

set /a RESULT=%1 * %RESULT%

exit /b

Пример работы:

> factorial.bat 10

3628800

Использование возвращаемых значений
(обработка кода завершения программы)

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

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

Пример пакетного файла с errorlevel"ами:

@ECHO OFF

REM Запускаем программу prg1.exe

PRG1.EXE

REM Анализ кода завершения

IF ERRORLEVEL 2 GOTO FILENOTFOUND

IF ERRORLEVEL 1 GOTO WRITEERROR

IF ERRORLEVEL 0 GOTO EXITOK

GOTO ONEXIT

:FILENOTFOUND

ECHO Ошибка! Файл не найден!

GOTO ONEXIT

:WRITEERROR

ECHO Ошибка записи!

GOTO ONEXIT

:EXITOK

ECHO Программа завершена благополучно.

GOTO ONEXIT

:ONEXIT

Обратите внимание - анализ кода завершения начинается не с нуля, а с максимально возможного значения. Дело в том, что подобная проверка означает: "если errorlevel больше или равен значению, то...". То есть, если мы будем проверять, начиная с нуля, любое значение будет истинным на первой же строке, что неверно.

Это самая распространенная ошибка в подобного рода программах.

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

Что такое bat-файлы?

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

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

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

Как создать bat-файлы?

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

Например, для запуска приложений:

start explore
start calc
start iexplore

После чего сохраните этой файл на Рабочем столе с понятным для вас именем, например «Запуск прог». Расширение сохраненного файла при этом надо изменить с TXT на BAT. Если у вас не отображается расширение файла, то необходимо включить отображение расширений файлов. Сделать это можно в настройках параметров папки через Панель управления или в самом проводнике. После того, как вы поменяете расширение, сделайте пробный запуск сохраненного файла. При выполнении указанного выше примера произойдет запуск сразу трех программ: Проводника, Калькулятора и Internet Explore.

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

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