Запустить программу с помощью бат файла. Команды bat-файлов (Windows). Основные операторы Bat-файла

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

  • Определение переменных
  • Переменные командной строки (параметры вызова 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 больше или равен значению, то...". То есть, если мы будем проверять, начиная с нуля, любое значение будет истинным на первой же строке, что неверно.

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

Как известно, операционные системы с графическими пользовательскими интерфейсами не всегда «хозяйничали» на компьютерах. Еще до их появления очень часто использовались DOS-подобные ОС, в которых для выполнения каких-либо действий необходимо было вводить специальные команды. И именно из них были позаимствованы принципы создания и выполнения так называемых пакетных файлов.

Несмотря на громкие заявления корпорации Microsoft о том, что поддержка MS-DOS была прекращена уже очень давно, если хорошенько вдуматься, нетрудно сообразить, что та же командная строка или консоль PowerShell работают как раз по тем же принципам. И для них иногда вписывать какие-то определенные команды, инициирующие выполнение тех или иных действий, совершенно необязательно. Можно запросто написать собственный код и сохранить его в специальном BAT-файле, после запуска которого действия будут выполнены автоматически. Но как создать BAT-файл в Windows 7 или ОС ниже или выше? Для этого есть несколько простых способов, о которых далее и пойдет речь. Но для начала необходимо выяснить, что это за объекты, и для чего они могут использоваться.

Что такое пакетный файл?

Вообще, на сегодняшний день различают две основных разновидности таких файлов, разделяя их исключительно по расширению: либо BAT, либо CMD. Поскольку такие объекты между собой и по содержанию, и по принципу выполнения очень похожи, чтобы не было путаницы, будем рассматривать именно вопросы, связанные с тем, как создать BAT-файл в Windows 7 и выше (хотя предлагаемые решения в равной степени относятся и к более ранним модификациям).

BAT-файл, или в простонародье «батник», представляет собой самый обычный текстовый документ, содержащий набор определенных команд, которые выполняются последовательно по мере перехода от одной строки кода к другой. Однако наборы могут содержать множество дополнительных операторов, включая зацикливание выполнения какого-то действия (loop) или переходы с соблюдением каких-либо условий (if, goto и т. д.). Если посмотреть на два вторых оператора, многим станет ясно, что они применялись еще в таких древних и примитивных языках программирования, к которым можно отнести тот же Basic. Несмотря на это, они и на современном этапе развития компьютерных технологий успешно используются и в более «продвинутых» языках (например, при написании скриптов на VB или в языке Pascal).

Для чего нужны

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

Примеры пакетных файлов Windows

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

Так, вероятно, все те пользователи, которые в свое время работали еще с первыми модификациями Windows, знают, что в них ранее присутствовал специальный файл Autoexec.bat, отвечающий за конфигурации системы при ее запуске, причем в него пользователь мог сам добавлять команды выполнения необходимых приложений вроде очистки дискового пространства, создания копий важных данных и т. д. Это только намного позднее в системе появился специальный конфигуратор, вызываемый командой msconfig.

Еще один достаточно необычный пример можно привести для планшетных ПК на основе Windows RT версий 8 и 8.1, в которых установка приложений производится исключительно через «Магазин» Windows, а стороннее ПО инсталлировать невозможно.

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

Не менее интересно выглядят и пакетный файл из набора Windows RT Development Tool, позволяющий перезапустить систему в режиме разработчика.

И уж, конечно, весьма необходимой утилитой оказалась программа SignTool, представленная как раз в виде пакетного BAT-файла, позволяющая выполнить для любого программного обеспечения и его компонентов в виде исполняемых файлов EXE и сопутствующих библиотек DLL, так сказать, «переподписание» с изменением исходной цифровой подписи на подпись Microsoft.

Как создать BAT-файл в Windows через «Проводник»?

Но вернемся к созданию пакетных объектов. Как создать BAT-файл, используя для этого встроенный файловый менеджера системы? Элементарно!

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

Как создать файл с расширением BAT в «Блокноте»?

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

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

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

Использование файлового менеджера FAR

Наконец, рассмотрим, как создать BAT-файл в одном из популярных файловых менеджеров под названием FAR Manager, который был создан по образу и подобию «дедушки Нортона» (Norton Commander).

Для этого используется сочетание клавиш Shift + F4, после чего в поле имени файла вводится его название с расширением через точку, нажимается клавиша ввода, а сохранение пустого файла производится нажатием Shift + F2, что соответствует команде «Сохранить как…» (Save As…). Отредактировать содержимое с вводом необходимых команд можно через соответствующую функцию «Edit», вызываемую клавишей F4. Что касается команд, их лучше заранее изучить самому. Но всем тем, кто хочет, например, через BAT-файл создать папку, можно предложить команду MKDIR или ее сокращенный вариант MD FolderName, где FolderName - название каталога. По большому счету, команду можно усложнить, указав местоположение на диске и выбрав пользователя. Да и вообще, практически для всех команд можно применять абсолютно любые переменные, которые в командах заключаются в символы процентов с обеих сторон.

Эпилог

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

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

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

Работа с bat через «Блокнот»

Алгоритм создания

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

  1. Создаёте текстовый документ, он у вас первоначально получится с расширением txt. Произвести эту операцию можно несколькими способами, некоторые зависят от уровня установленной у вас Windows:
    • В папке, выбранной вами, кликнуть правой кнопкой на поле, откроется меню, там выбираем «Создать» - «Текстовый документ»;
    • Запустить «Блокнот» через «Пуск», выбрав «Все программы» - «Стандартные» - «Блокнот» (для Windows 7);
    • В поздних (после 7) версиях Windows открыть «Блокнот» можно также через «Пуск» : идёте через «Все приложения», далее «Стандартные» - «Windows» и там уже в списке выбирайте «Блокнот»;
    • Вызовите системное окно команд посредством комбинации Win+R, в строке введите «notepad», нажмите «Ok».
  2. Впишите текст команд. Для пробы запишите, например, «START taskmgr.exe» - запуск диспетчера задач . «START» говорит интерпретатору команд, что нужно запустить какую-либо программу, далее указывается экзешник программы.
  3. Укажите путь, где сохранить созданный документ.
  4. Указываете в окне сохранения:
    • в строке «Тип» - «Все файлы»;
    • в строке «Имя» вводите название и расширение bat, дописав его после названия, поставив точку между названием и расширением, - например, «file.bat».
  5. Кликаете на «Сохранить».

В указанной вами папке появится пакетный файл с расширением.bat.

Запуск файла

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

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

Если захотите изменить документ - добавить в bat-файл команды, удалить некоторые из них, вписать другую программу для последующей работы с ней, - сделать это не сложно. Откройте документ посредством текстового редактора. Удобно это выполнить, нажав на bat-файл правой кнопкой, в открывшемся меню выбирайте «Изменить». Запустится «Блокнот» - там и можно редактировать команды, изменять содержание, вносит дополнения.

Применение Dr.Batcher

Новичку, только начинающему работать с командным интерпретатором, использующему его довольно редко, достаточно «Блокнота». Если хотите выйти на более высокий профессиональный уровень, рекомендуем применять утилиту Dr.Batcher. В Dr.Batcher можно нумеровать страницы, там есть поддержка закладок, список системных команд, применяемых в bat, введённые команды подсвечиваются.

Создание документа

Алгоритм несложный, не требует особых навыков и профессионализма. Скачав утилиту, вы быстро сможете сделать всё необходимое.

Запустите Dr.Batcher.

  1. Откройте новую страницу: «File» - «New» или кликните на иконку чистого листа, находящуюся под меню «File».
  2. В диалоговом окне кликните на «Empty Batch File».
  3. Образуется окно программы, где будут функции для работы с bat.
  4. Введя нужный текст, сохраните.

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

Если нужно изменить bat-файл, в Dr.Batcher это делается несколькими путями:

  1. Кликните по иконке правой кнопкой, в меню выбираете «Edit with Dr.Batcher».
  2. Запустите Batcher. Откройте нужный bat-файл, пройдя по пути:
  • «File»;
  • «Open»;
  • указать путь к документу;
  • «Открыть».

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

Bat-файл удобен, когда нужно автоматизировать выполнение задач в Windows . Особенно если необходимо несколько раз (периодически либо подряд) производить действия в определённом алгоритме. Это обычно требуется при создании системы каталогов, при массовом переименовании файлов и других простых и более сложных операциях. Сохранив порядок действий, вы быстро и без лишней потери времени на ручное введение команд сможете в любое время запустить процесс, повторить его для разных программ, внеся только их название в готовый текст. Рекомендации как сделать bat-файл, изложенные выше, помогут вам самостоятельно не только создавать их, но и редактировать.

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

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

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

Будьте внимательны! Никогда не запускайте на компьютере файлы с расширением.BAT, скачанные из неизвестного или подозрительного ресурса, а также не используйте при создании такого файла код, в котором вы не уверены. Исполняемые файлы такого типа умеют шифровать, переименовывать или удалять файлы, а также форматировать целые разделы.

Способ 1: использование расширенного текстового редактора Notepad++

Программа является аналогом стандартного Блокнота в операционной системе Windows, значительно превосходя его в количестве и тонкости настроек.

  1. Файл можно создать на любом диске или в папке. Для примера будет использован рабочий стол. На свободном месте нажмите правую кнопку мыши, наведите курсор на надпись «Создать» , в выпавшем сбоку окошке щелчком левой кнопки мыши выберите «Текстовый документ»
  2. На рабочем столе появится текстовый файл, который желательно назвать так, как в итоге будет называться наш батник. После того, как имя для него определено, нажмите на документе левой кнопкой мыши, и в контекстном меню выберите пункт «Edit with Notepad++» . Созданный нами файл откроется в расширенном редакторе.
  3. Очень важна роль кодировки, в которой будет исполнена команда. По умолчанию используется кодировка ANSI, которую нужно заменить на OEM 866. В шапке программы нажимаем на кнопку «Кодировки» , нажимаем на аналогичную кнопку в выпавшем меню, затем выбираем пункт «Кириллица» и нажимаем на «OEM 866» . Как подтверждение смены кодировки справа внизу в окне появится соответствующая запись.
  4. Тот код, который вы уже нашли в интернете или написали сами для выполнения определенной задачи, необходимо просто скопировать и вставить в сам документ. На примере ниже будет использована элементарная команда:

    shutdown.exe -r -t 00

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

  5. Когда команда будет записана в поле, наступает самый важный момент — превращение обычного документа с текстом в исполняемый. Для этого в окошке Notepad++ слева вверху выберите пункт «Файл» , затем нажмите на «Сохранить как» .
  6. Появится стандартное окно Проводника, позволяющее задать два основных параметра для сохранения — место и имя самого файла. Если с местом мы уже определились (по умолчанию будет предложен Рабочий стол), то именно в названии заключается последний шаг. Из выпадающего меню выберите пункт «Batch file» .

    К уже заданному ранее слову или фразе без пробела допишется «.BAT» , и получится так, как на скриншоте ниже.

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

Способ 2: использование стандартного текстового редактора Блокнот

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


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

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

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

Технология пакетных файлов

Пакетные файлы (их также называют командными или bat-файлами) – текстовые документы с расширениями.bat или.cmd, содержащие последовательность команд, которые можно запустить подобно любому приложению Windows. Такая технология позволяет пользователю создавать программы пакетной обработки, выполняющие несколько последовательно записанных команд. Это очень удобно, если периодически приходится совершать повторяющиеся действия. Пакетные файлы предоставляют гибкие возможности создания сценариев, с их помощью возможно написание и маленьких линейных последовательностей команд, и сложных сценариев с условными ветвлениями и циклами. Технология файлов пакетной обработки используется во многих ОС и оболочках, среди которых Windows, OS/2, Mac OS и Linux-подобные системы.

Создание и использование

Начиная работу, нужно тщательно продумать последовательность команд, которые будут выполняться. Для написания пакетного файла необходимо создать текстовый документ с расширением.bat или.cmd, ввести в него нужные команды (каждую с новой строки) и сохранить. Это можно проделать в любом текстовом редакторе, скажем, в Блокноте , но если вы используете в командах пути к файлам с русскими символами или выдачу сообщений на русском языке, необходимо задействовать редакторы, которые поддерживают DOS-кодировку, например стандартный редактор менеджера FAR. В любое время доступно редактирование содержимого командных файлов. Рекомендуется также в целях безопасности просматривать их содержимое перед запуском, если они созданы не вами и получены из сомнительных источников.

Для выполнения такого файла необходимо запустить его, как и всякое приложение Windows. Каждая строка bat-файла представляет собой действие (команду). Это могут быть команды для работы с файлами и папками, запуск приложения или другого пакетного файла, работа с реестром, вывод на экран сообщений и т. д., можно выполнять любые действия, поддерживаемые интерпретатором командной строки. Для получения списка этих команд следует нажать (или Пуск→Выполнить… ), ввести в поле запуска cmd (command – для Windows ниже версии NT) и нажать ОК , после чего в открывшемся окне командной строки набрать help и нажать Enter . Детальную справку по конкретной команде можно получить, введя ее имя, пробел и /? , например copy /?Enter . Кроме команд командной строки, в пакетных файлах можно вызывать другие bat-файлы, внешние утилиты (и, допустим, defrag), а также любые приложения и сервисы (только для NT-систем).

Рассмотрим такой пример. Вы постоянно работаете с тремя файлами, которые находятся в разных каталогах жесткого диска, и часто создаете их резервные копии на USB-flash-drive. Для этого потребуется заходить в каждый каталог и копировать файлы по отдельности на флэшку. Если написать простенький пакетный файл, то перечисленные действия сведутся к его запуску. Предположим, что полные пути и имена файлов таковы: D:WorkProfits.xls, D:HomeHome.doc и C:MyDocsOplata.doc , а G: – съемный флэш-диск для резервной копии. Тогда нужный пакетный файл будет выглядеть так:

copy D:WorkProfits.xls G:Backup

copy D:HomeHome.doc G:Backup

copy C:MyDocsOplata.doc G:Backup

Первые три строки непосредственно копируют файлы в каталог Backup на USB-накопитель. В последней – команда ожидания нажатия любой клавиши. Она используется для того, чтобы после выполнения предыдущих команд не закрылось окно командной строки и можно было увидеть результаты выполнения bat-файла. Данный пакетный файл будет исполнен независимо от своего названия и местоположения на компьютере. Теперь для резервного копирования нужно только запустить созданный файл.

Пакетные файлы поддерживают передачу параметров командам. Это очень удобно, если необходимо создавать гибкие bat-файлы для автоматизации целого ряда типовых задач. Для передачи параметров надо при вызове после имени файла поставить пробел и указать один или несколько параметров. Запускать пакетный файл с параметрами можно либо из командной строки, либо с помощью созданного для него ярлыка. Однако в последнем случае теряется принцип универсальности, так как ярлык будет содержать вызов файла с заранее введенными параметрами. Можно также создать несколько ярлыков для запуска одного bat-файла с разными параметрами. В тексте пакетного файла параметры представляются с помощью знака % и номера параметра при вызове, начиная с 1.

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

copy D:WorkProfits.xls %1

copy D:HomeHome.doc %1

copy C:MyDocsOplata.doc %1

Теперь путь назначения файла будет указываться при запуске. Для резервного копирования на флэшку необходимо набрать в командной строке D:Mybatsbackup.bat G:Backup и нажать Enter. D:Mybatsbackup.bat полный путь и имя исполняемого файла (если он находится в текущей папке – путь не обязателен), а G:Backup – первый параметр, определяющий местоположение резервных копий. При выполнении команды копирования вместо %1 будет подставлен первый параметр G:Backup . Используя переносной винчестер (H:) с папкой Copydir пакетный файл необходимо вызывать так: D:Mybatsbackup.bat H:Copydir . Если данный bat-файл был запущен без параметров, то указанные файлы скопируются в папку, где расположен пакетный файл. В данном случае файлы при копировании будут заменены без подтверждения, для выдачи же запроса подтверждения замены необходимо добавить ключ /-Y , тогда каждую команду копирования нужно записать так: copy /-Y D:WorkProfits.xls %1 . При создании пакетных файлов для резервного копирования рекомендуется изучить команду xcopy , которая представляет собой расширенную версию copy.

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

if not exist %1 mkdir %1.

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

Пакетные файлы, как и командная строка, предоставляют возможность работы с переменными окружения, которые хранят различные системные параметры. Перечень переменных окружения можно получить в разделе «Общие сведения о командной оболочке» справки Windows. Например %WINDIR% – размещение каталога ОС Windows, а %TEMP% и %TMP% содержат пути к системной и пользовательской папкам для временных файлов соответственно.

Рассмотрим следующий пример. Многие пользователи иногда очищают содержимое временных каталогов. Для этого необходимо перейти в соответствующую папку (их может быть и две), выделить содержимое и удалить. После написания простенького bat-файла очистка временных каталогов выполняется запуском файла с Рабочего стола. К тому же саму папку удалить нельзя, а при выделении ее содержимого мышкой без использования специальной команды (Выделить все или Ctrl+A ) все скрытые файлы и папки останутся нетронутыми. Итак, содержимое файла:

del /F /S /Q %temp%

del /F /S /Q %tmp%

Первые две строки выполняют удаление содержимого системной и пользовательской папок для временных файлов. Для команды del использованы специальные модификаторы (ключи): /F – удаление файлов, помеченных «только для чтения», /S – удаление из всех подкаталогов, а /Q избавляет пользователя от подтверждения. Справку по этой и другим командам интерпретатора со всеми возможными модификаторами можно получить, набрав имя команды /?Ente r. Последняя команда pause необходима, если вам интересен отчет об удалении файлов.

.bat или.cmd

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

Пакетные файлы (.bat) использовались еще в ранних версиях MS-DOS как средство выполнения нескольких команд. Эти файлы выполнялись командным интерпретатором command.com и были основным средством автоматизации.

Начиная с Windows NT, используются командные файлы (.cmd), но пакетные также поддерживаются. Командные файлы являются усовершенствованной технологией пакетных и выполняются интерпретатором cmd.exe.

Пакетные файлы поддерживаются вплоть до Win-dows Vista, но обладают ограниченным набором команд по сравнению с командными файлами и выполняются медленнее.

Варианты запуска

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

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

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

Полезное применение

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

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

Bat-файлы и Windows Vista

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

Ссылки по теме

coop.chuvashia.ru/kartuzov/os/Articles/05/Bat_NT.htm – статья, посвященная командным файлам NT; рассмотрен синтаксис, описание команд и типовые примеры

www.firststeps.ru/msoffice/win/bats/bats1.html – руководство по созданию и использованию пакетных файлов под Windows 98, но будет актуально и для более новых ОС

www.windowsfaq.ru/content/category/3/7/45 – ряд статей об использовании пакетных и командных файлов с наглядными примерами

megakomp.info/engine/print.php5?newsid=55&news_page=1 – несколько полезных примеров использования командных и пакетных файлов

www.osp.ru/win2000/2006/08/3829295 – советы и рекомендации по использованию файлов пакетной обработки с примерами

www.shkolazhizni.ru/archive/0/n-2425 – статья посвящена ускоренному выключению компьютера с помощью пакетного файла

www.ttgdt.edu.ru/students/learn/bat_files.html – описание команд и синтаксиса bat-файлов с примерами

www.megalib.com/books/1487/page2245.html – общие сведения по применению.bat- и.cmd-файлов

www.securitylab.ru/processinfo/267532.php – описание команды at (запуска программ и пакетных файлов по расписанию)