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

Содержание

как создать, основные команды и запуск программ

Рассмотрим мощный инструмент автоматизации рутинных задач в семействе операционных систем Windows.

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

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

Название BAT появилось от английского batch — пакетная обработка. В истории продуктов Microsoft пакетные файлы существовали с первой версии MS-DOS в 80-х годах и позже успешно интегрировались в Microsoft Windows. В MS-DOS командным интерпретатором выступает COMMAND.COM, а начиная с Windows NT и до сих пор используется CMD.EXE.

Интерпретатор COMMAND.COM принимает файлы с расширением .BAT. Расширение .CMD создано для интерпретатора CMD.EXE с целью различать файлы для «старого» и «нового» интерпретаторов. CMD.EXE корректно обрабатывает оба расширения.

Интерпретатор CMD. EXE является частью современных операционных систем семейства Microsoft Windows, несмотря на отсутствие развития с начала 2000-х.

Основы взаимодействия с bat-файлами

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

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

Для создания пакетных файлов необходимо открыть текстовый редактор и в меню Файл выбрать Сохранить как….

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

Если вы ошиблись при сохранении и пакетный файл сохранился с расширением txt, то не обязательно совершать повторное сохранение. Можно включить отображение расширения имен файлов и переименовать файл.

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

Запуск пакетных файлов производится двойным кликом по иконке. Дополнительно можно использовать команду Открыть из контекстного меню, которое доступно при нажатии правой клавиши мыши (ПКМ) по файлу. Если для выполнения команд требуются права администратора, то в том же контекстном меню есть пункт Запуск от имени администратора

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

Запуск через контекстное меню откроет командный интерпретатор, в котором выполнятся команды bat-файла. По завершении команд окно закроется. Такое поведение неприемлемо, если от пакетного файла требуется какая-то обратная связь — например, сообщение об ошибке или результат вычислений. В таком случае интерпретатор следует запустить вручную и передать ему пакетный файл. 

Для запуска интерпретатора командной строки необходимо открыть меню Выполнить сочетанием клавиш Win + R, вписать cmd и нажать ОК.

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

Скрытый запуск

Вне зависимости от способа запуска откроется окно, которое может привлекать внимание и раздражать. Для запуска в «скрытом» режиме необходимо использовать другой скриптовой язык Microsoft Windows — VBScript.

По аналогии создаем файл с расширением .vbs и заполняем его следующими командами:

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "С:\путь\до\вашего\скрипта.bat" & Chr(34), 0
Set WshShell = Nothing

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

Запуск по расписанию

За выполнение действий по расписанию отвечает Планировщик заданий. Открываем меню Выполнить и запускаем программу taskschd. msc.

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

  • имя для простой идентификации,
  • периодичность и время запуска,
  • действие — Запустить программу,
  • программа или сценарий — путь до вашего .bat-файла или .vbs-файла, который запускает .bat-файл скрытно.

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

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

Команды и синтаксис пакетных файлов

Командный интерпретатор выполняет команды из файла последовательно — строка за строкой. Исключение составляет только оператор GOTO, который «отправляет» к указанной строке. Командный интерпретатор выполняет два вида команд: встроенные команды и внешние исполняемые файлы.

Внешние исполняемые файлы — это любой исполняемый файл, то есть с расширением EXE, CMD или BAT, который доступен в операционной системе. Например, «Блокнот» — это исполняемый файл notepad.exe. Следующая команда приведет к запуску этого приложения с открытым файлом C:\1.txt:

notepad.exe C:\1.txt

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

Обратите внимание, что не все внешние команды «понимают» аргументы, переданные из интерпретатора командной строки. Например, исполняемый файл приложения калькулятор, calc.exe, игнорирует все аргументы командной строки. Внешним исполняемым файлом может быть в том числе другой bat-файл.

Встроенные команды — это команды, которые являются частью интерпретатора командной строки. Полный список команд доступен по команде HELP. Данные команды не имеют отдельного исполняемого файла. 

Иногда в имени файла или каталога встречаются пробелы. Наиболее очевидный пример — каталог Program Files на диске C. В этом случае помогают кавычки. Их можно расставить различными способами. Например:

cd "C:\Program Files\123"
cd C:\”Program Files”\123

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

Оставлять комментарии при разработке — хороший тон. Так можно объяснить выполняемые действия и потенциальные ошибки. В пакетных файлах можно оставлять комментарии несколькими способами. 

Официальный способ — команда rem или два двоеточия.

rem Это первый комментарий
:: Это тоже комментарий

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

goto start
===
Здесь можно оставить большой комментарий,
лицензию или даже ASCII-арт
===
:start

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

Совместимость с MS-DOS 

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

<первые шесть символов имени>~<порядковый номер>

Например, каталог Program Files выглядит следующим образом:

Progra~1

В современных операционных системах такое отображение не применяется, но CMD.EXE до сих пор поддерживает такие запросы к файлам и каталогам.

Используйте bat-файлы в работе с выделенным сервером

Выберите подходящий из более 100 готовых конфигураций.

Подобрать сервер

Примеры bat-файлов

Рассмотрим несколько примеров bat-файлов. Начнем с базовых команд.

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

Представим простой пример: необходимо обновить аренду IP-адресов на всех сетевых интерфейсах. В командной строке это делается одной командой:

ipconfig /renew

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

rem Отключаем отображение команд. Символ @ отключает отображение текущей команды
@echo off
rem Переводим вывод выполнения в устройство NUL, вывод исчезнет
ipconfig /renew > NUL

При запуске такого скрипта появляется черное окно, которое быстро исчезает. Можно оставить простые и понятные пользователю сообщения и не дать окну закрыться.

@echo off
echo Выполняется настройка, пожалуйста, подождите...
ipconfig /renew > NUL
echo Все хорошо.
rem Эта команда остановит выполнение до тех пор, пока пользователь не нажмет любую клавишу
pause

Скорее всего данный скрипт выведет набор непонятных символов вместо сообщения. Дело в том, что в русскоязычных ОС Windows по умолчанию в CMD.EXE используется кодировка CP866. Блокнот сохраняет в CP1251 (Windows-1251), а Notepad++ — в UTF-8. Для решения проблемы необходимо сменить кодировку интерпретатора командой chcp или сохранить bat-файл в кодировке интерпретатора.

rem Смена кодировки на Windows-1251
chcp 1251 > NUL
rem Смена кодировки на UTF-8
chcp 65001 > NUL

Я сохранил файл в кодировке UTF-8 и итоговый скрипт получился таким:

@echo off
chcp 65001 > NUL
echo Выполняется настройка, пожалуйста, подождите...
ipconfig /renew > NUL
echo Все хорошо.
pause

Создание резервной копии каталога

Перейдем к более жизненной ситуации — создание резервной копии (backup) каталога. Предположим, что каждый архив должен иметь в названии дату создания копии. Создадим каталог, имя которого — текущая дата. Текущая дата хранится в переменной DATE. Для обращения к переменным название переменной помещается между знаками процента.

mkdir %DATE%
cd %DATE%

Копирование файлов в текущий каталог производится командой COPY.

rem файлы 1.txt и 2.txt будут скопированы в текущую папку
COPY C:\1.txt C:\2.txt .
rem файл 3.txt будет сохранен в текущую папку как example.txt
COPY C:\1.txt .\example.txt

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

rem Имя компьютера записывается в файл computer.txt
hostname > computer.txt
rem Список файлов в текущем каталоге записывается в files.txt
dir . > files.txt

Обычно резервные копии хранят в zip- или rar-архивах. Из командной строки отлично управляется архиватор 7z.

cd ..
7z -tzip a backup.zip %DATE% 

Переименование файлов

Переименование файлов в Windows производится командой RENAME. Однако эта команда имеет свои особенности. 

Во-первых, переименование возможно только в рамках одного диска и одного каталога. Между каталогами одного диска допустимо перемещение, а между разными дисками — только копирование.

rename abc. txt cba.txt

Во-вторых, возможно переименование по маске. Допустим, есть список фотографий photo000.jpeg, photo001.jpeg и так далее. Нужно сменить префикс с photo на mobile.

rename photo* mobile*

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

rename photo*.jpeg mobile*.jpeg

Удаление файлов

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

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

rem Ищем все файлы с расширением jpeg в каталоге work
rem Ключ /r включает в поиск все подкаталоги в каталоге work
for /r work %%file in (*.jpeg) do (
   rem Выводим имя файла
   echo %%file
   delete %%i
)

Заключение

Командный интерпретатор CMD. EXE существует долгое время, но, даже несмотря на отсутствия развития, остается востребованным инструментом для автоматизации рутинных действий в операционной системе Microsoft Windows.

Как создать bat-файл в Windows 7/10 – примеры команд и сохранение батника

Содержание:

  • 1 Как создать файл с расширением BAT
  • 2 Основные команды, синтаксис и примеры использования батников
  • 3 Запуск bat-файлов от имени администратора и по расписанию, скрытый запуск bat

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

Командная строка не столь удобна, зато с её помощью можно выполнять недоступны из GUI операции. С другой стороны, запускать каждый раз консоль, вводить в неё одну за другой команды – всё это сильно замедляет работу. Впрочем, можно существенно упростить задачу, создав бат-файл или попросту батник – текстовый файл с расширением BAT, содержащий список инструкций, обрабатываемых командным интерпретатором CMD. Используются такие файлы для автоматизации разных задач, например, для удаления временных файлов по расписанию или запуска программ.

Как создать файл с расширением BAT

Итак, как создать bat-файл в Windows 7/10? Очень просто. Для этого понадобится любой текстовый редактор и знание основ командной строки. Можно использовать Блокнот, а ещё лучше Notepad++, так как последний имеет подсветку синтаксиса. Создайте в редакторе новый файл, в меню «Файл» выберите «Сохранить как», дайте будущему скрипту имя, а в выпадающем списке «Тип файла» выберите «Batch file (*bat; *cmd; *nt)».

Если для создания bat-файла захотите использовать Блокнот, расширение нужно присвоить вручную, а в списке «Тип файла» выбрать «Все файлы».

Как видите, создать файл с расширением bat не составляет сложности, есть тут, однако, свои тонкости. В командных файлах нельзя использовать перенос строк, кодировка bat-файла должна быть выставлена UTF-8, если в теле скрипта используется кириллица, кодировку нужно изменить, вставив в положенном месте команду chcp 1251.

Основные команды, синтаксис и примеры использования батников

Как сделать bat-файл вы знаете, теперь настала пора самого интересного, а именно синтаксиса языка интерпретатора CMD. Понятно, пустой батник работать не будет, он даже не запустится при двойном по нему клике. Чтобы скрипт сработал, в нём должна быть прописана хотя бы одна команда. Для наглядного примера посмотрим, как написать bat-файл для запуска программ. Допустим, приступая к работе, вы каждый раз запускаете три программы – Chrome, Firefox и VLC. Упростим задачу, создав скрипт, который будет сам запускать эти программы с интервалом в пять секунд.

Открываем пустой батник и вставляем в него такие команды:

start "" "C:/Program Files/Google/Chrome/Application/chrome. exe"
timeout /t 05
start "" "C:/Program Files/Mozilla Firefox/firefox.exe"
timeout /t 05
start "" "C:/Program Files/VideoLAN/VLC/vlc.exe"

Команда start запускает исполняемый файл нужной программы, а команда timeout /t задаёт интервал между запусками. Обратите внимание на расположение кавычек – в них берутся пути, в которых имеются пробелы. Также если в пути есть кириллические символы, в начало скрипта следует вставить изменяющую кодировку команду chcp 1251, в противном случае интерпретатор не сможет правильно прочитать путь.

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

start /b "" "путь"

Может также статься, что в определённый момент потребуется приостановить выполнение скрипта, чтобы пользователь сам смог решить, выполнять ли все остальные команды или нет. Для этого существует команда pause. Попробуйте заменить ею timeout и увидите, что получится.

start /b "" "путь"
pause

Рассмотрим ещё один пример команд для bat файла. Напишем скрипт, который будет в одном случае выключать компьютер, а в другом – перезагружать его. Для этих целей мы будем использовать команду shutdown с параметрами /s, /r и /t. При желании можно добавить в батник запрос на выполнение действия, вот так:

@echo off
chcp 1251
echo "Вы действительно хотите выключить компьютер?"
pause
shutdown /s /t 0

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

Что ещё можно делать с помощью скриптов? Много чего, например, удалять, копировать или перемещать файлы. Допустим, у вас есть некая папка data в корне диска D, содержимое которой нужно очистить одним махом. Открываем батник и вставляем в него такую команду:

del /A /F /Q "D:/data"

А можно и так:

forfiles /p "D:/data" /s /m *.* /c "cmd /c Del @path"

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

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

robocopy C:/data D:/backup /e
pause

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

Запуск bat-файлов от имени администратора и по расписанию, скрытый запуск bat

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

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

Скрипты, как и все приложения, можно запускать по расписанию. Команда timeout /t здесь не совсем уместна, для отложенного запуска лучше всего использовать встроенный «Планировщик задач» Windows. Здесь всё просто. Открываем командой taskschd.msc Планировщик, определяемся с триггером, действие выбираем «Запустить программу» и указываем путь к bat-файлу. Вот и всё, скрипт будет запущен в положенное время.

И напоследок ещё один интересный момент. Когда вы запускаете bat-файл, на экране появляется, пусть даже на какую-то долю секунды, окно командной строки. А нельзя ли сделать так, чтобы скрипт выполнялся в скрытом режиме? Можно, причём несколькими способами. Самый простой заключается в следующем. Создаём на bat-файл ярлык, открываем его свойства и в меню «Окно» выбираем «Свёрнутое в значок». После этого единственным видимым признаком запуска скрипта будет появление значка CMD на панели задач, окон же при этом открываться не будет.

Если вы желаете полностью скрыть выполнение скрипта, можете воспользоваться «костылем» – скриптом VВS, который будет запускать ваш батник в скрытом режиме. Текст скрипта приведен ниже, сохраните его в файл hidden.vbs, предварительно заменив путь во второй строчке кода D:/sсript.bat путём к вашему батнику.

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "D:\script.bat" & Chr(34), 0
Set WshShell = Nothing

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

А на этом пока всё. Информацию касательно создания скриптов BAT без труда можно найти в интернете. Неплохо также ознакомиться с учебником Уильяма Станека «Командная строка Microsoft Windows». Несмотря на то, что с момента издания книги прошло более десяти лет, содержащаяся в ней информация до сих пор актуальна.

за | Microsoft Узнайте

Обратная связь

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

Твиттер

LinkedIn

Фейсбук

Эл. адрес

  • Статья
  • 8 минут на чтение

Запускает указанную команду для каждого файла в наборе файлов.

Синтаксис

 для {%% | %} in () do  []
 

Параметры

Параметр Описание
{%% \| %}<переменная> Обязательно. Представляет заменяемый параметр. Используйте один знак процента ( % ), чтобы выполнить команду вместо в командной строке. Используйте знаки двойного процента ( %% ) для выполнения команды вместо в пакетном файле. Переменные чувствительны к регистру и должны быть представлены в алфавитном порядке, например 9.0044 %a , %b или %c .
( <набор> ) Обязательно. Указывает один или несколько файлов, каталогов или текстовых строк или диапазон значений, для которых выполняется команда. Скобки обязательны.
<команда> Обязательно. Указывает команду, которую вы хотите выполнить для каждого файла, каталога или текстовой строки или для диапазона значений, включенных в набор .
<параметры командной строки> Указывает любые параметры командной строки, которые вы хотите использовать с указанной командой.
/? Отображает справку в командной строке.
  • Эту команду можно использовать в пакетном файле или непосредственно из командной строки.

  • К команде для применяются следующие атрибуты:

    • Эта команда заменяет % переменная или %% переменная с каждой текстовой строкой в ​​указанном наборе, пока указанная команда не обработает все файлы.

    • Имена переменных чувствительны к регистру, являются глобальными, и не более 52 могут быть активны одновременно.

    • Во избежание путаницы с параметрами партии, от %0 до %9 , вы можете использовать любой символ для переменной , кроме цифр от 0 до 9 . Для простых пакетных файлов один символ, например %%f будет работать.

    • Можно использовать несколько значений для переменной в сложных пакетных файлах, чтобы отличать разные заменяемые переменные.

  • Параметр set может представлять одну группу файлов или несколько групп файлов. Вы можете использовать подстановочные знаки ( * и ? ) для указания набора файлов. Допустимы следующие наборы файлов:

     (*.doc)
    (*.doc *.txt *.me)
    (янв*.док янв*.рпт фев*.док фев*.рпт)
    (ар??1991.* ап??1991.*)
     
  • При использовании этой команды первое значение в наборе заменяет % переменной или %% переменной , а затем указанная команда обрабатывает это значение. Это продолжается до тех пор, пока не будут обработаны все файлы (или группы файлов), соответствующие значению set .

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

  • Если расширения команд включены (по умолчанию), поддерживаются следующие дополнительные формы для :

    • Только каталоги: Если набор содержит символы подстановки ( * или ? ), указанная команда выполняется для каждого каталога (вместо набора файлов в указанном каталоге), который соответствует набору . Синтаксис:

       для /d {%%|%} в () do  []
       
    • Рекурсивный: Обходит дерево каталогов, корнем которого является диск : путь , и выполняет оператор for в каждом каталоге дерева. Если после /r каталог не указан, в качестве корневого каталога используется текущий каталог. Если set представляет собой всего лишь одну точку (.), он только перечисляет дерево каталогов. Синтаксис:

       для /r [[<диск>:]<путь>] {%%|%}<переменная> in () do  []
       
    • Итерация диапазона значений: Используйте итеративную переменную, чтобы установить начальное значение ( start #), а затем пройти через заданный диапазон значений, пока значение не превысит установленное конечное значение ( end #). /l выполнит итерацию, сравнивая start # с end #. Если start # меньше end #, команда будет выполнена. Когда итеративная переменная превышает end #, командная оболочка выходит из цикла. Вы также можете использовать минус step # для перехода через диапазон в порядке убывания значений. Например, (1,1,5) генерирует последовательность 1 2 3 4 5, а (5,-1,1) генерирует последовательность 5 4 3 2 1. Синтаксис:

       для /l {%%|%}<переменная> in (,,) do  []
       
    • Итерация и синтаксический анализ файлов: Используйте синтаксический анализ файлов для обработки вывода команды, строк и содержимого файла. Используйте итерационные переменные, чтобы определить содержимое или строки, которые вы хотите изучить, и используйте различные parsingkeywords опции для дальнейшего изменения синтаксического анализа. Используйте параметр токена parsingkeywords , чтобы указать, какие токены следует передавать в качестве итерационных переменных. При использовании без параметра токена /f будет проверять только первый токен.

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

      Синтаксисы:

       для /f [] {%%|%}<переменная> in () do  []
      for /f [] {%%|%} in () do  []
      for /f [] {%%|%} in ('') do  []
       

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

      Если вы используете параметр usebackq , используйте один из следующих синтаксисов:

       для /f [usebackq ] {%%|%} in () do  []
      for /f [usebackq ] {%%|%} in ('') do  []
      for /f [usebackq ] {%%|%} in (``) do  []
       

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

      Ключевое слово Описание
      эол= <с> Задает символ конца строки (только один символ).
      пропустить= Задает количество пропускаемых строк в начале файла.
      разделители= Задает набор разделителей. Это заменяет набор разделителей по умолчанию, состоящий из пробела и табуляции.
      жетонов= Указывает, какие токены из каждой строки должны передаваться в цикл для для каждой итерации. В результате выделяются дополнительные имена переменных. m-n задает диапазон от m th до n th токенов. Если последним символом в строке tokens= является звездочка ( * ), выделяется дополнительная переменная, и она получает оставшийся текст в строке после последней анализируемой лексемы.
      использованиебэкк Указывает запускать строку в обратных кавычках как команду, использовать строку в одинарных кавычках в качестве буквальной строки или, для длинных имен файлов, содержащих пробелы, разрешать имена файлов в , чтобы каждое из них было заключено в двойные -кавычки.
    • Замена переменной: В следующей таблице приведен необязательный синтаксис (для любой переменной I ):

      Переменная с модификатором Описание
      %~I Раскрывает %I , удаляя все окружающие кавычки.
      %~fI Расширяет %I до полного имени пути.
      %~dI Расширяется %I только на букву диска.
      %~пи Расширяет %I только до пути.
      %~nI Расширяет %I только до имени файла.
      %~xI Расширяет %I только до расширения имени файла.
      %~sI Путь расширяется, чтобы содержать только короткие имена.
      %~aI Расширяет %I до атрибутов файла файла.
      %~tI Расширяет %I до даты и времени файла.
      %~zI Расширяет %I до размера файла.
      %~$ПУТЬ:I Выполняет поиск в каталогах, перечисленных в переменной среды PATH, и расширяет %I до полного имени первого найденного каталога. Если имя переменной среды не определено или файл не найден поиском, этот модификатор заменяется пустой строкой.

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

      Переменная с комбинированными модификаторами Описание
      %~dpi Расширяет %I только до буквы диска и пути.
      %~nxI Расширяет %I только до имени файла и расширения.
      %~fsI Расширяет %I до полного имени пути только с короткими именами.
      %~dp$PATH:I Ищет в каталогах, перечисленных в переменной среды PATH, %I и расширяется до буквы диска и пути к первому найденному.
      %~ftzaI Расширяет %I до строки вывода, похожей на dir .

      В приведенных выше примерах можно заменить %I и PATH с другими допустимыми значениями. Допустимое имя переменной вместо завершает синтаксис %~ .

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

  • Разбор строки: Вы можете использовать логику разбора for /f для непосредственной строки, заключив в двойные кавычки ( 9 ) обрабатываются как обычные символы.

  • Анализ выходных данных: Вы можете использовать команду for /f для анализа выходных данных команды, поместив <команда> в кавычках между скобками. Он рассматривается как командная строка, которая передается дочернему Cmd.exe. Вывод записывается в память и анализируется, как если бы это был файл.

Примеры

Чтобы использовать вместо в пакетном файле, используйте следующий синтаксис:

 для {%%|%}<переменная> в () do  []
 

Чтобы отобразить содержимое всех файлов в текущем каталоге с расширением .doc или .txt, используя заменяемую переменную %f , введите:

 для %f в (*. doc *.txt) do введите %f
 

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

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

 для /feol=; tokens=2,3* delims=, %i в (myfile.txt) do @echo %i %j %k
 

Эта команда анализирует каждую строку в myfile.txt . Он игнорирует строки, начинающиеся с точки с запятой, и передает второй и третий токен из каждой строки в тело для (токены разделяются запятыми или пробелами). Тело 9.0044 для оператора ссылается на %i для получения второго маркера, %j для получения третьего маркера и %k для получения всех оставшихся маркеров. Если указанные имена файлов содержат пробелы, заключите текст в кавычки (например, Имя файла). Чтобы использовать кавычки, вы должны использовать usebackq . В противном случае кавычки интерпретируются как определяющие литеральную строку для анализа.

%i явно объявлен в для 9Заявление 0045. %j и %k неявно объявлены с использованием tokens= . Вы можете использовать токена = , чтобы указать до 26 токенов, при условии, что это не вызовет попытки объявить переменную выше буквы z или Z.

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

 for /f "usebackq delims==" %i in (`set`) do @echo %i
 

Дополнительные ссылки

  • Ключ синтаксиса командной строки

Обратная связь

Отправить и просмотреть отзыв для

Этот продукт

Эта страница

Просмотреть все отзывы о странице

Командная строка в Windows: основы работы с пакетными файлами

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

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

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

Это простые текстовые файлы, содержащие некоторые
строки с командами, которые выполняются последовательно, одна за другой.
Эти файлы имеют специальное расширение BAT или CMD. Файлы этого типа
распознается и выполняется через интерфейс (иногда называемый оболочкой)
предоставляется системным файлом, называемым командным интерпретатором. В Windows XP/Vista
командным интерпретатором является файл cmd.exe. Большой ассортимент
универсальные команды, доступные в Windows XP/Vista/7, делают пакетные файлы мощным
инструмент.

Создание пакетного файла состоит не более чем из открытия любого текста
редактор как аксессуар Блокнот ,
ввод некоторых строк, содержащих команды, и сохранение файла с расширением
BAT или CMD. (Расширение CMD ограничено более новыми системами Windows и
не распознается в системах Windows 9x/Me. В Windows XP, Vista и 7 мало
практическая разница между двумя расширениями.) Не используйте Wordpad или Word , если
вы очень осторожны, чтобы сохранить все файлы в чистом текстовом формате. Команды
сами по себе часто довольно просты и нет необходимости изучать программирование
язык. Желающие могут изучить тонкости, которые доступны с
ветвления и циклы, но здесь я ограничусь обсуждением некоторых простых
приложение к повседневным задачам. Основное внимание будет уделено экономии времени и усилий
для некоторых рутинных вещей, таких как обслуживание системы и простое управление файлами.

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

Создание пакетного файла

В последующем обсуждении предполагается, что вводная страница
и страница о командах прочитана.

Первая строка пакетного файла часто состоит из этой команды @echo off Автор
по умолчанию пакетный файл будет отображать свои команды во время выполнения.
целью этой первой команды является выключение этого дисплея. Команда «эхо
off» выключает отображение всего скрипта, кроме «echo
выключенный»
сама команда. Знак «at» «@» впереди делает команду
применить и к себе. Этот нюанс не так уж и важен в
контекст здесь, но я упоминаю об этом, потому что это часто встречается в сценариях. Скрипты
мы обсудим очень кратко и опуская
эта линия не будет иметь большого значения. Однако, как дело
хорошей практики, мы введем его в наши скрипты.

В нашем первом примере пакетного файла будет список всех файлов в папке.
и поместите список в новый текстовый файл. Мы будем использовать команду каталога «dir», которая
обсуждается
на другой странице. Откройте Блокнот и введите строку «@echo off» (без
цитаты). Далее введите еще одну строку dir
"C:\Program Files" > C:\list_of_program_files. txt

предполагая, что ваша папка Program Files находится на диске C:). Это будет
дайте нам двухстрочный файл @echo off реж.
"C:\Program Files" > C:\list_of_program_files.txt
Теперь сохраните
этот двухстрочный файл как «listprograms.bat» (без кавычек) некоторым
удобное расположение. Убедитесь, что Блокнот сохраняет как «Все файлы» и
не как текстовый файл. См. рисунок ниже.

В примере сценария показаны три важных момента. Обратите внимание, что
полные пути используются для файлов, включая букву диска. Также обратите внимание
кавычки вокруг «C:\Program Files». Пути должны быть заключены в кавычки всякий раз, когда
в имени файла или папки есть пробел. Наконец, обратите внимание на перенаправление
символ «>», что
используется для отправки вывода в файл вместо экрана.

Все, что нужно сделать, чтобы использовать файл
является двойной щелчок по нему. Файл C:\list_of_program_files.txt будет затем
быть создан.

Более общая версия с аргументами

Файл, который мы обсуждали, ограничен перечислением одного конкретного
папку и поместив список в один конкретный файл. Однако это легко
чтобы файл мог перечислить любую папку, которую мы хотим, и поместить
список, где мы хотим. Пакетные файлы могут использовать аргументы или данные,
ввод от пользователя. В процессе используются заполнители формы
%1, %2, они заменяются в скрипте нашими входными данными. Этот тип
ситуации нельзя щелкнуть напрямую, но ее следует запустить в команде
быстрый. Новый пакетный файл будет @echo off каталог %1 >
%2
Ввод
в Блокноте и сохраните как «makelist.bat». Чтобы запустить файл, откройте
командную строку и введите {путь} makelist куда-то\список.txt , где какая-то папка
любую папку (с полным путем), которую вы хотите перечислить в где-то\list. txt . В настоящее время
у вас есть небольшая программа, которая будет отображать содержимое папки всякий раз, когда
ты хочешь. Если вам нужен список всех подпапок, используйте команду реж.
/s %1 > %2
Если вам нужен список, включающий только файлы определенного
например, файлы MP3, используйте каталог %1\*.mp3 > %2
строка выше иллюстрирует использование подстановочного знака «*». Способность
использование подстановочных знаков значительно расширяет возможности пакетных файлов.

Жизнь будет проще, если вы поместите все пакетные сценарии в папку, которая
на пути
Окружающая среда.

Заявление Рема

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

Другие примеры

Следуя обсуждению на другой странице,
легко создавать пакетные файлы для некоторого типичного обслуживания. Создавать
очень простой скрипт резервного копирования, используйте xcopy.
Код может быть xcopy %1 %2 /d /s Это обновит все файлы
в исходной папке ввода %1 и ее подпапках
путем копирования в папку резервного копирования %2. На практике полезная резервная копия
script, вероятно, потребуется еще несколько переключателей, обсуждаемых в xcopy.

Опять после предыдущего обсуждения
команда «del», файл для удаления всех временных файлов с расширением
TMP может содержать del %1\*.tmp

Запрос ввода пользователем

Вы также можете взаимодействовать с пользователем и запрашивать ввод данных. В старой DOS была команда «Выбор» для очень ограниченного взаимодействия, но в Windows XP/Vista она была заменена более универсальной командой «set /p». Синтаксис: set /p переменная = [строка] «Переменная» — это имя переменной, которая будет присвоена данным, которые вы хотите, чтобы пользователь ввел. «Строка» — это сообщение, которое пользователь увидит в качестве подсказки. При желании «строка» может быть опущена. Вот пример, который просит пользователя ввести свое имя: set /p name= Как вас зовут? Будет создана переменная %name%, значением которой будет то, что вводит пользователь. Обратите внимание, что пользователь должен нажать клавишу «Enter» после ввода ввода.

(Команда «Выбор» вернулась в Vista в виде более мощной версии.