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


Пакетные BAT файлы

  • AJIekceu4
  • 25.01.2020
  • 19 497
  • 0
  • 07.05.2021
  • 41
  • 40
  • 1
  • Содержание статьи

Описание

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

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

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

Безопасно ли запускать bat файлы?

Ответ на этот вопрос зависит от того, насколько вы в состоянии понять содержимое пакетного файла, который хотите запустить. Если вы его автор, самостоятельно написали все команды и понимаете что эти команды делают, то конечно же запуск таких файлов совершенно безвреден для компьютера. НО, если вы получили такой файл по почте, скачали из интернета (особенно с сомнительного сайта) и т.д., то запускать его следует только в том случае, если вы доверяете тому, кто этот файл написал и дал вам, либо понимаете, что делают все команды, которые прописаны в нем. Так с помощью некоторых команд, которые могут быть написаны в .bat файле, можно полностью вывести из строя Windows, удалить важные данные, установить вирус или кейлоггер для кражи данных и много чего еще. Поэтому к этому вопросу надо подходить со всей ответственностью и понимать, чем это может грозить.

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

Для начала создадим папку test в корне диска C:\, чтобы в ней проводить наши эксперименты. Далее откройте блокнот (или любимый текстовый редактор) и наберите две следующих строки:

@echo my first bat file
 @pause

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

Пример заполнения файла

Выберите Файл - Сохранить как

Выберите Тип файла - Все файлы, в поле Имя файла введите start.bat и сохраните его в папке test на диске С.

Все, наш первый bat файл создан и лежит по адресу C:\test\start.bat. Теперь нам осталось этот файл запустить и увидеть результаты его работы.

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

Запустить .bat файл очень просто, это делается точно также, как и запуск .exe файлов. Для этого достаточно выделить нужный .bat файл в проводнике и дважды щелкнуть по нему левой кнопкой мыши.
Альтернативным вариантом запуска (чтобы случайно не запустить что то не то, например, в том случае, если в папке много файлов) может являться запуск bat файла в 2 этапа. Сначала выделяем нужный файл левой кнопкой мыши, далее нажимаем на правую кнопку мыши, чтобы вызвать контекстное меню, и в нем уже выбираем пункт меню Открыть

В нашем примере, мы переходим в папку test на диске C:\ и запускаем файл start.bat, который мы ранее написали.

После его выполнения на экран будет выведено две строки, как на скриншоте ниже:

результат выполнения файла start.bat

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

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

Описание и примеры использования некоторых самых популярных команд есть у нас на сайте, ознакомиться с ними можно по этой ссылке: Справочник команд Windows (CMD)

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

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

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

help COPY

В результате, на экран будет выведена справка по команде COPY и доступные ключи.

Практические приемы программирования в bat-файлах | windows

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

Мы все любим писать серьезные вещи на серьезных языках. Шаблоны, C++, Reflection, Perl и многое другое – вот то, что мы любим, то, чему посвящаем длинные сообщения в форумах, то, что снится нам по ночам.

Однако в нашей повседневной деятельности встречаются и вещи, которые не так интересны и интеллектуальны. Мы не очень любим говорить об этом, делаем вид, что Это – грязно, нечистоплотно и недостойно нашего внимания. Однако, приходит день, приходит час и перст Судьбы находит нас – нам надо написать еще один батничек… Иногда это запускалка для построения проекта, которая должна при ошибке компиляции скопировать логи на сетевой диск, иногда – запуск обновления исходных текстов из SVN. Иногда – что-нибудь еще.

К чему я это все? А к тому, что поговорим мы о полезных хитростях при написании файлов сценариев на встроенном командном языке Windows. К счастью, это занятие не является доминирующим в профессиональной деятельности автора, так что я не обязуюсь заполнить абсолютно все пробелы в данной области. Кроме того, рожденный ползать летать не может, и из cmd.exe, увы, не получится ни /usr/bin/perl, ни даже /bin/sh. Так что, все нижеприведенное – просто некоторые интересные факты из жизни файлов с расширением bat, на которые автор обратил внимание во время решения различных практических задач автоматизации.

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

ПРЕДУПРЕЖДЕНИЕ

Практически все описанные здесь рецепты подойдут только для Windows 2000 и старше. Bat-язык Windows 9x, к счастью, можно считать почившим, так что здесь он не рассматривается. Более того, диалекты cmd.exe операционных систем Windows 2000, Windows XP и Windows Server 2003 также немного различаются. Все приведенное ниже создано и проверено на компьютере под управлением операционной системы Windows XP. За подробной информацией по различиям в реализации той или иной команды обращайтесь к [1].

Как экранировать символ?

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

  • Операторы перенаправления ввода-вывода <, >, >>.
  • Оператор конвейера |.
  • Операторы объединения команд ||, & и &&.
  • Оператор разыменования переменной %…%.

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

echo The ratio should be up to 10%
 

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

echo The ratio should be up to 10%%
 

после чего все заработает так, как надо. Однако в других случаях все менее очевидно. Рассмотрим командный сценарий, который генерирует незатейливый HTML-файл:

@echo off
 set OUTPUTFILE=%1
 echo <html> >%OUTPUTFILE%
 echo <head> >>%OUTPUTFILE%
 echo <title>This is a greeting page</title> >>%OUTPUTFILE%
 echo </head> >>%OUTPUTFILE%
 echo <body> >>%OUTPUTFILE%
 echo Hello World! >>%OUTPUTFILE%
 echo </body> >>%OUTPUTFILE%
 echo </html> >>%OUTPUTFILE%
 

К сожалению, при попытке запуска этого "чуда инженерного разума" нас постигнет неудача в виде сообщения об ошибке "was unexpected at this time".

Оно и понятно: командный интерпретатор не в силах разобраться, где его просят вывести на экран символ HTML-тега, а где перенаправить вывод. В нормальных языках программирования эта проблема обычно решается обрамлением строковых литералов кавычками. Отчасти это помогает и в bat-файлах. Но лишь отчасти. Выполнение строки

echo "<html>" >%OUTPUTFILE%
 

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

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

@echo off
 set OUTPUTFILE=%1
 echo ^<html^> >%OUTPUTFILE%
 echo ^<head^> >>%OUTPUTFILE%
 echo ^<title^>This is a greeting page^</title^> >>%OUTPUTFILE%
 echo ^</head^> >>%OUTPUTFILE%
 echo ^<body^> >>%OUTPUTFILE%
 echo Hello World! >>%OUTPUTFILE%
 echo ^</body^> >>%OUTPUTFILE%
 echo ^</html^> >>%OUTPUTFILE%
 

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

Как перенести длинную строку?

Совет по поводу экранирующего символа ^ имеет еще одно применение: перенос строк. Я (как и многие из вас, наверное) люблю, чтобы любой исходный текст, который я пишу, выглядел красиво – даже *.bat-файлы. Одним из обязательных условий красоты и удобочитаемости кода для меня является его ширина: все строки должны умещаться в 78 столбцов. Можно поспорить по поводу числа 78, но в одном я непреклонен – ограничение на ширину текста кода должно быть, иначе это не код, а макароны.

Так вот долгое время *.bat-файлы портили мне жизнь тем, что иногда приходилось писать длинную строку – например, вызов какой-нибудь другой программы с кучей опций, и я не знал, что с этим делать. Происходило это нечасто, но всегда было неприятно. Но, к счастью, моя жизнь изменилась с тех пор, как я открыл для себя Супер-Символ ^:

packagebin.exe --recursive-search=yes --files-mask=exe,dll,pdb,obj ^
 --archive-type=zip --archive-level=max --deliver-method=ftp ^
 --deliver-target=ftp://ftp.site.com
 

Помните лишь, что чудо-символ должен быть последним в строке – скажите «Нет!» концевым пробелам.

Как определить имя каталога, в котором находится запущенный командный файл?

Иногда сценарию надо знать полный путь к себе самому и/или к каталогу, в котором он находится. Это может понадобиться по разным причинам. Например, он должен достать из системы контроля версий исходники в каталог/src рядом с собой. Или, запускаются тесты из каталога/tests, и перед их запуском надо добавить каталог/bin в переменную PATH.

Можно, конечно, рассчитывать на то, что командный файл был вызван из того же каталога, где он находится, и тогда в качестве вышеупомянутогоможно использовать переменную окружения %CD% - полный путь к текущему каталогу. Однако любые допущения в нашем деле недопустимы (хороший каламбур, однако!). Поэтому приведу более надежное решение.

Прежде всего, вспоминаем, что переменная %0 в bat-файле соответствует нулевому аргументу командной строки, т.е. имени самого файла. После этого читаем скудную документацию для команды call:

call /?
 

и обнаруживаем, что при использовании нумерованных переменных %0-%9 можно использовать некоторые модификаторы:

%~1 - разворачивает %1, удаляя кавычки (")
%~f1 - разворачивает %1 в полный квалифицированный путь
%~d1 - разворачивает %1 в букву диска
%~p1 - разворачивает %1 в путь
%~n1 - разворачивает %1 в имя файла
%~x1 - разворачивает %1 в расширение файла
%~s1 - развернутый путь будет содержать только короткие имена
%~a1 - разворачивает %1 в атрибуты файла
%~t1 - разворачивает %1 в дату/время создания файла
%~z1 - разворачивает %1 в размер файла
%~$PATH:1 - Ищет в каталогах, перечисленных в переменной среды PATH, и разворачивает %1 в полное квалифицированное имя первого совпадения. Если имя переменной среды не определено, или если файл не найден, этот модификатор вернет пустую строку и, более того, модификаторы можно объединять для получения сложных результатов:

%~dp1 - разворачивает %1 в букву диска и путь
 %~nx1 - разворачивает %1 в имя файла с расширением
 %~dp$PATH:1 – ищет %1 в каталогах, перечисленных в переменной среды PATH, и разворачивает в букву диска
 и путь к первому найденному файлу.
 %~ftza1 - разворачивает %1 в строку, подобную DIR
 

Таким образом, правильным будет использовать в качестве тега сочетание %~dp0, которое будет раскрыто в полный путь к каталогу, где находится сценарий. Например,

"%~dp0\packagebin.exe" --recursive-search=yes --files-mask=exe,dll,pdb,obj ^
 --archive-type=zip --archive-level=max --deliver-method=ftp ^
 --deliver-target=ftp://ftp.site.com --deliver-source="%~dp0\bin"
 

Обратите внимание на использование кавычек – потенциально каталог может иметь в своем пути пробел. Кавычки избавят от проблем в этом случае.

ПРЕДУПРЕЖДЕНИЕ

Опасайтесь бездумного применения команды cd %~dp0 без проверки результата выполнения. Теоретически, эта команда должна сменить текущий каталог на каталог, в котором расположен командный файл. Как правило, это работает. Однако возможны неожиданности. Однажды был написан простой командный сценарий, задача которого была просто удалить все каталоги рядом с собой. В «свою» директорию он переходил как раз через cd %~dp0. Все было проверено на локальной машине – работало замечательно. После этого сценарий был помещен на файл-сервер, где ему и полагалось быть. Я зашел с помощью Far в сетевой каталог, и для контрольной проверки решил запустить файл еще раз. Дальнейшее словно в тумане. cmd.exe правильно определил местонахождение bat-файла: \\servername\sharename\directory. Однако при попытке сделать туда cd, он сказал, что UNC-пути в качестве текущих каталогов не поддерживаются и лучше он сменит текущий каталог на C:\WINDOWS… Это было действительно мудрое решение… Часть сценария, отвечавшая за удаление всех каталогов, сработала отлично – хорошо, что я успел вовремя остановить это безумие.

В тот день я узнал, что такое System Restore…

Как получить короткое (8.3) имя файла?

«А зачем? – спросите вы – Ведь мы живем в мире Интернета, Web-сервисов и NTFS с длинными именами файлов». Это действительно так, но иногда встречаются программы, которые отчаянно сопротивляются прогрессу, и в частности, не любят имен файлов и полных путей с пробелами. Одной из таких программ, кстати, является утилита build.exe из Windows DDK… В таких ситуациях спасает использование короткого, «беспробельного» DOS-имени для файла.

ПРЕДУПРЕЖДЕНИЕ

Доступ к файлу по короткому имени может быть не всегда возможен. На файловой системе NTFS создание коротких псевдонимов для файлов может быть отключено путем установки в единицу значения «NtfsDisable8dot3NameCreation» в ключе реестра «HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\FileSystem».

Итак, все же (в предположении, что надругательства над NTFS не было) – как? Внимательный читатель должен был заметить в предыдущем разделе, что при обращении к переменным %0 - %9 можно использовать префикс (расширенный путь будет содержать только короткие имена)

%~s1
 

который нам как раз мог бы помочь. Но есть засада – все эти полезные префиксы нельзя использовать с произвольной переменной окружения, а присваивание переменным %0 - %9 не поддерживается. К счастью, описываемые префиксы можно еще использовать с переменными цикла for, и это дает нам способ достичь требуемого результата. Например, вот так можно получить 8.3-путь к “Program Files”:

for /d %%i in ("%PROGRAMFILES%") do (
set PROGRAMFILESSHORT=%%~si
 )
echo 8.3-имя для каталога "%PROGRAMFILES%" -^> "%PROGRAMFILESSHORT%"
 

Этот и другие модификаторы можно использовать и с любой другой формой цикла for, подробнее о которых можно узнать из (см. также статью [1]):

for /?
 

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

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

echo Cleaning up the target directory >>%LOGFILE%
 ...
echo The target directory has been cleaned >>%LOGFILE%
 

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

@echo off
 set OUTPUT=out.html
 if "%STDOUT_REDIRECTED%" == "" (
 set STDOUT_REDIRECTED=yes
 cmd.exe /c %0 %* >%OUTPUT%
 exit /b %ERRORLEVEL%
 )
 echo ^<html^>
 echo ^<head^>
 echo ^<title^>This is a greeting page^</title^>
 echo ^</head^>
 echo ^<body^>
 echo Hello World!
 echo ^</body^>
 echo ^</html^>
 

Здесь делается то же, что и раньше, но с перенаправлением стандартного вывода в файл out.html. Делается это простым способом – перезапуском сценарием самого себя. Сначала проверяется, не установлена ли переменная окружения STDOUT_REDIRECTED. Если она установлена, значит, сценарий уже перезапущен с перенаправленным выводом и можно просто продолжить работу. Если же переменная не установлена, то мы ее устанавливаем и перезапускаем скрипт (cmd.exe /c %0) с таким же набором параметров, что и исходная команда (%*) и перенаправленным в файл стандартным выводом (>%OUTPUT%). После завершения выполнения «перенаправленной» команды выходим.

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

Как сложить два числа?

Краткий ответ – смотри:

set /?
 

Длинный ответ таков. В bat-файлах можно производить довольно-таки продвинутые вычисления – продвинутые не в сравнении с другими языками, а в сравнении с отсутствием возможности что-либо вычислить вообще. Вычисление осуществляется командой set, если она выполняется с ключом /a. Поддерживается практически полный набор операторов языка C, включая шестнадцатеричный модификатор 0x. Переменные окружения в выражении не обязательно заключать в знаки процента – все, что не является числом, считается переменной. Подробнее – все-таки в man set, тьфу, то есть в set /?. А здесь напоследок – просто несколько примеров.

@echo off
set ARG=1
rem Переменные окружения в выражении не обязательно заключать в %...%
set /a RESULT=ARG + 2
echo %RESULT%
 
rem Если выражение содержит какие-либо из символов non grata, надо
rem заключить его в кавычки
set /a RESULT="ARG << 2"
echo %RESULT%
 
rem Шестнадцатеричная арифметика
set /a RESULT=0x1234 + 0x6786
echo %RESULT%
 
rem И многое-многое другое...
 

А можно создать в bat-файле функцию?

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

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

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

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

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

call /?
exit /?

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

@echo off
call :factorial %1
echo %RESULT%
 exit
 
rem Функция для подсчета значения факториала
rem Вход: %1 Число, для которого необходимо подсчитать факториал
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
 

Как можно избежать использования goto?

Любой хоть сколько-то осмысленный *.bat-файл длиной больше 50 строк является ярким лозунгом в поддержку работы Дейкстры [3]. Мешанина из переходов вперед и назад действительно является кодом «только для записи». Можно ли что-то предпринять по этому поводу?

На самом деле можно. Как правило, большинство меток и переходов используются для организации ветвлений при проверке условий, т.е. банальных if-then-else блоков. В оригинале, bat-язык поддерживал только одну команду в блоке then, что автоматически приводило к идиомам вида:

if condition goto :THEN
rem Команды ветки ‘else’
rem ...
goto IF_END
:THEN
rem Команды ветки ‘then’
rem ...
:IF_END
 

Но к счастью, командный интерпретатор cmd.exe современных ОС Windows 2000 и старше поддерживает блоки команд в конструкциях ветвления, что устраняет необходимость применения меток. Блоки команд заключаются в круглые скобки. Выглядит это так (имитируя 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" (
echo INFO: Устанавливаем debug-режим окружения
set CCFLAGS=/Od /MDd /Z7
 ) else (
echo INFO: Устанавливаем release-режим окружения
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, либо использованием команды

setlocal enabledelayedexpansion
 

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

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

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 у вас встретится закрывающая круглая скобка, то вам необходимо заэкранировать ее символом ^, иначе синтаксический анализатор путается…

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

Как обработать текстовый файл?

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

Для привнесения еще большей конкретики в процесс изучения зададимся целью прочитать файл с настройками следующего содержания:

buildmode=release
compiler=cl.exe
arch=x86

Ничего сверхъестественного – простой key=value формат с возможностью вставки Unix-style комментариев. Помочь в чтении и обработке этого файла нам сможет команда for. Ее дополнительные опции позволяют задать и разделители, и символ начала комментария, и кое-что еще. Вот командный файл, который выполняет поставленную задачу:

@echo off
rem Читаем настройки из файла settings.txt, который должен располагаться в
rem том же каталоге, что и bat-файл. Если не удалось распарсить настройки -
rem выходим с ненулевым кодом возврата.
call :read_settings %~dp0\settings.txt || exit /b 1
rem Прочитанные настройки:
echo Build mode : %BUILDMODE%
echo Compiler : %COMPILER%
echo Architecture: %ARCH%
 
rem Выход из сценария. Дальше - только функции.
 exit /b 0
 
rem Функция для чтения настроек из файла.
rem Вход: %1 - Имя файла с настройками
:read_settings
set SETTINGSFILE=%1
rem Проверка существования файла
if not exist %SETTINGSFILE% (
echo FAIL: Файл с настройками отсутствует
 exit /b 1
 )
 
rem Обработка файла c настройками
rem Здесь: eol=# указывает на то, что содержимое строки начиная с символа #
rem и до ее конца может быть пропущено как комментарий.
rem delims== указывает, что разделителем значений является символ =
rem tokens=1,2 приводит к тому, что в переменную %%i будет занесен первый
rem токен, а в %%j - второй.
for /f "eol=# delims== tokens=1,2" %%i in (%SETTINGSFILE%) do (
 rem В переменной i - ключ
 rem В переменной j - значение
 rem Мы транслируем это в переменные окружения
 set %%i=%%j
 )
 exit /b 0
 

Обильные комментарии должны помочь легко разобраться, что к чему. За подробностями, как обычно, отошлю к:

for /?
 

Кстати, возможности команды for не ограничиваются чтением из файла. Возможно также чтение вывода другой команды. Например, так:

@echo off
 for /f "tokens=* usebackq" %%i in (`cmd.exe /c ver`) do (
 set VERSION=%%i
 )
 echo %VERSION%
 

Особенно меня умиляет наличие опции “usebackq”, которая делает синтаксис отдаленно похожим на юниксовый. И в стенах царства Билла есть граждане, скучающие по /bin/sh и пытающиеся хоть как-то скрасить существование свое и окружающих. Следующий совет это также косвенно подтверждает.

Что это за упомянутые ранее операторы объединения команд?

Это операторы &, && и ||. Они практически совсем не освещены в документации, но полезны в повседневности. Они позволяют объединять несколько команд в одну, т.е. примерно так:

command1 & command2
 command1 && command2
 command1 || command2
 

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

command1
 command2
 

Оператор && гарантирует, что вторая команда будет выполнена только, если первая была выполнена успешно, т.е. с нулевым кодом возврата (он же %errorlevel%). Такие конструкции очень популярны в мире shell-сценариев Unix. Например:

cd sources && make clean
 

Я был приятно удивлен, узнав, что cmd.exe тоже умеет выполнять такие конструкции. Это безопаснее и правильнее, нежели простое последовательное выполнение этих команд, и короче и проще, чем строгая проверка и обработка кодов возврата. Очень удобно при написании на скорую руку. Не менее полезен иногда и оператор ||. Суть его тоже логична – выполнить вторую команду, если первая дала сбой. Часто встречается в таких идиомах:

cd sources || exit 1
 

Если перейти в каталог sources не удастся, то будет произведен выход с кодом ошибки 1. Если же первая команда отработает нормально, то вторая выполнена не будет. Например, такая простейшая защита помогла бы в случае с cd по UNC-адресу, описанному ранее.

Можно ли написать на bat-языке серьезную программу?

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

  • Perl
  • Python
  • Ruby
  • JScript / VBScript

Последние, кстати, присутствуют в Windows 2000/XP по умолчанию (с некоторыми функциональными различиями) и в целом могут считаться заменой *.bat языку. Однако сдается мне, что *.bat-файлы проживут еще очень долго.

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

Проверить наличие определенного параметра в bat-файле можно оператором if [%1]==[] goto, пример:

@echo off
 
if [%1]==[] goto usage
 @echo Это не выполнится, если параметр %1 указан
 @echo Done.goto :eof
 
:usage
 @echo Usage: %0 ^<EnvironmentName^>
 exit /B 1
 

Как можно отменить (экранировать) действие специальных символов (< и >)?

Это можно сделать с помощью символа ^ (см. предыдущий пример).

Автор: Алексей Александров. Источник: RSDN Magazine #2-2005

[Ссылки]

1. Применение команды for в bat-файлах (technet.microsoft).
2. DOS Command Index site:earthlink.net.
3. О вреде оператора goto site:vspu.ac.ru.

Пакетные (BAT) файлы - что такое, чем открыть и как писать узнаешь тут!

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

Название BAT файлы было получено за счет наличия указанного расширения. Запуск пакетных документов является аналогичным приложениям .EXE и .COM. Следует отметить главное отличие от классических программ. BAT документы не содержат внутри код. Предусматривается наличие исключительно текстовой информации. Именно её считывает и выполняет командный процессор DOS. Существует несколько доступных вариантов:

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

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

Допускается помещение внутрь пакетных документов всех существующих команд. Предполагается усложнение поставленных задач и даже создание условий. В этом деле оказывают поддержку команды goto, if и for. Требуется отметить autoexec.bat – файл необходим при осуществлении начальных настроек ОС в ходе запуска.

Следует рассмотреть простейший пример самостоятельного создания пакетного файла. Для выполнения поставленной задачи будет достаточно открыть новый документ с расширением TXT и ввести туда предложенный текст:

title Batch File Testing

echo Hello World

echo.

echo Starting Notepad

start notepad

echo.

echo Starting Wordpad

start Wordpad

echo.

pause

exit

После этого осуществляется сохранение документа и установка для него любого названия. Основным моментом требуется предусмотреть задание расширения CMD или BAT. После этого требуется выполнить запуск. Происходит назначение окна с названием "Batch File Testing". Работа указанного документа будет заключаться в том, чтобы открыть блокнот и выполнить запрос на нажатие любой клавиши. Когда это сделано, окно закроется.

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

Задание паузы в файле BAT перед исполнением последующей команды

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

ping -n 1 -w 50000 123.123.123.254 >nul

Следует перечислить и расшифровать параметры:

n 1

Запрос будет исполняться только один раз

w 50000

Для ожидания ответа выбран интервал в 50.000 мс (50 секунд)

123.123.123.254

В качестве этого параметра прописывается IP адрес, которого точно не существует внутри локальной сети. Это позволяет утверждать о невозможности ответа на запрос

>nul

Производится перенаправление для выдачи в несуществующее место

Зацикливание в файле BAT выполнения команды

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

:loop

ping -n 1 -w 60000 123.123.123.254 >nul

start notepad.exe

goto loop

Происходит открытие блокнота каждую минуту.

Создание папки, имя которой устанавливается текущей датой

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

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

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

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

или

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

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

@echo off

for /F "tokens=1-4 usebackq delims=. " %%1 in (`date /t`) do set mydate=%%4.%%3.%%2

ren test.txt test%mydate%.txt

Это позволит изменить название документа с test.txt на test(гггг.мм.дд).txt

Запрет повторного запуска программ

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

pslist.exe -e "операция"

if %errorlevel%==1 start "" "приложение"

Здесь упоминается специальная программа pslist. Она является бесплатной и может быть свободно загружена из интернета.

Выполнение резервных копий в автоматическом режиме

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

rem *******************

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

rem *******************

SET DRIVE1ST=d:

SET DRIVE2ND=e:

 

rem *******************

rem пароль на архив

rem *******************

SET PASSWD=qmsdhgsdfgsdfhdsfhsdhf

 

rem *******************

rem если копировать для надёжности куда-нибудь на сетку

rem *******************

rem SET COPYTO=\\shpakk\c$\!backup

 

rem ********************

rem *** Проверим путь назначения архива

rem ********************

%DRIVE1ST%

if not exist \!backup md \!backup

if not exist \!backup\Departments md \!backup\Departments

if not exist \!backup\Exchange md \!backup\Exchange

if not exist \!backup\MEDEA_rdisk md \!backup\MEDEA_rdisk

cd \!backup

 

rem ******************************

rem *** Backup \\SERVER\e$\Exchange

rem ******************************

SET DIRNAME=Exchange

SET FILENAME=SERVER_Exchange

SET SOURCEDIR=e:\Exchange

rar a -r -m5 -dh -x*.mp3 -x*.fcd -x*.avi -x*.zip -x*.rar -x*.exe -w%DRIVE2ND%\ -p%PASSWD% %DIRNAME%\%FILENAME%_new %SOURCEDIR%\*.*

if not exist %DIRNAME%\%FILENAME%_new.rar goto next2

del %DIRNAME%\%FILENAME%_old.rar

ren %DIRNAME%\%FILENAME%.rar %FILENAME%_old.rar

ren %DIRNAME%\%FILENAME%_new.rar %FILENAME%.rar

copy %DIRNAME%\%FILENAME%.rar %COPYTO%\%DIRNAME%

 

:next2

rem ***************************

rem *** Backup \\SERVER\e$\Users

rem ***************************

SET DIRNAME=Departments

SET FILENAME=SERVER_Departments

SET SOURCEDIR=e:\Departments

if not exist %DIRNAME%\%FILENAME%_new.rar goto next3

del %DIRNAME%\%FILENAME%_old.rar

ren %DIRNAME%\%FILENAME%_4.rar %FILENAME%_old.rar

ren %DIRNAME%\%FILENAME%_3.rar %FILENAME%_4.rar

ren %DIRNAME%\%FILENAME%_2.rar %FILENAME%_3.rar

ren %DIRNAME%\%FILENAME%_new.rar %FILENAME%_2.rar

:next3

rem *******************

rem это если архив будет большим - кусками бить -v357888k

rem *******************

rem rar a -r -m5 -v357888k -dh -x*.mp3 -x*.fcd -x*.avi -x*.exe -w%DRIVE2ND%\ -p%PASSWD% %DIRNAME%\%FILENAME%_new %SOURCEDIR%

rem *******************

rem архивирование пошло, не берём мультимедиа файлы

rem *******************

rar a -r -dh -x*.mp3 -x*.fcd -x*.avi -x*.exe -x*.jpg -x*.tif -p%PASSWD% %DIRNAME%\%FILENAME%_new %SOURCEDIR%

goto next4

 

:next4

rem **********************************

rem *** Create repair disk on \\SERVER

rem **********************************

SET DIRNAME=MEDEA_rdisk

SET FILENAME=MEDEA_rdisk

SET SOURCEDIR=%windir%\repair

%windir%\system32\rdisk.exe /s-

rar a -r -m5 -dh -w%DRIVE2ND%\ -p%PASSWD% %DIRNAME%\%FILENAME%_new %SOURCEDIR%\*.*

if not exist %DIRNAME%\%FILENAME%_new.rar goto next5

del %DIRNAME%\%FILENAME%_old.rar

ren %DIRNAME%\%FILENAME%.rar %FILENAME%_old.rar

ren %DIRNAME%\%FILENAME%_new.rar %FILENAME%.rar

copy %DIRNAME%\%FILENAME%.rar %COPYTO%\%DIRNAME%

 

:next5

В итоге имеем 3 папки: Departments, в ней:

SERVER_Departments_2.rar - 2х дневной давности

SERVER_Departments_3.rar - 3х дневной давности

SERVER_Departments_4.rar - 4х дневной давности

SERVER_Departments_new.rar - НОВЫЙ

SERVER_Departments_old.rar - СТАРЫЙ Exchange

Так как архивируем обменник - он нам сильно то и не нужен храним только сегодняшний и вчерашний архивы

SERVER_Exchange.rar

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

SERVER_rdisk

SERVER_rdisk.rar

SERVER_rdisk_old.rar

Использование комментариев в файлах BAT

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

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

goto start

--------------------------------------

Этот пакетный файл предназначен

для автоматизации рутинных операций,

выполняемых ночью для синхронизации

содержимого корпоративного ftp-сервера

с ftp-серверами филиалов

--------------------------------------

Пакетный файл написан 01/01/2016

Последнее исправление внесено 10/02/2016

--------------------------------------

И т.д.

:start

Подобный вариант обеспечивает запуск пакетного документа, после чего выполняется переход контроля непосредственно команде, которая помещается после start. В некоторых ситуациях будет выгодным использовать иной подход. Например, хорошо подходит применение команды rem или два двоеточия. Они оптимально подходят для небольших по своему размеру комментариев с длиной в одну строчку.

rem Комментарий

:: Комментарий

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

Ожидание появления заданного документа в файле BAT

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

:test

if exist c:\1.txt goto go

ping -n 20 127.0.0.1 >nul

goto test

:go

start notepad.exe

Приведенный текст задает необходимость выполнения проверки каждые 20 секунд того, существует ли в корне диска С документа с названием 1.txt. Если подобное событие произойдет, выполняются действия после goto. В конкретной ситуации производится запуск программы блокнота, но можно использовать любые другие варианты.

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

:test

if exist c:\1.txt goto go

ping -n 10 127.0.0.1 >nul

goto test

:go

rename c:\1.txt 1.txt

if not %errorlevel% == 0 goto go

del c:\1.txt

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

Способы обхода процедуры проверки даты из файла BAT

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

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

set tempdate=%date:~-10%

date 01-01-04

start notepad.exe

date %tempdate%

Что именно делают прописанные строки? Прежде всего, производится сохранение текущей даты в системе. Для этого применяется особая переменная. Во второй строке происходит установка системной даты на новое значение. В данном случае, это 1 января 2004 года. Сразу после этого предполагается проведение вызова программы, отвечающей за проверку системной даты. Мы использовали блокнот, но в Вашем случае требуется предусмотреть подобный момент. Пока Блокнот является открытым, пакетный документ ожидает, а сама дата не предусматривает изменение обратно. После закрытия Блокнота происходит возврат системной даты из переменной.

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

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

set tempdate=%date:~-10%

date 01-01-04

start notepad.exe

date %tempdate%

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

Импорт переменных реестра из пакетного файла

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

regedit.exe -s C:\environment.reg

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

Экспорт переменных реестра из пакетного файла

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

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

Происходит сохранение ветки HKEY_CURRENT_USER\Environment в документ, расположенный по адресу C:\environment.reg. При запросе на восстановление значений HKEY_CURRENT_USER\Environment, предполагается необходимым только выполнить запуск environment.reg. Примером использования такой команды следует назвать осуществление регулярного бэкапа настроек ПО или всей системы. Подобная информация находится в реестре и может быть выгружена оттуда. Полный адрес может включать в себя проблемы. Чтобы они не вызвали ошибку, надо позаботиться о заключении подобного пути в кавычки.

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

Символ процента относится к категории спецсимволов. Если требуется применить его внутри пакетного документа, то следует прописывать дважды.

echo 50%%

Если ввести указанную команду, то предполагается выдача на экран в BAT документе 50%. Без использования двойного символа %%, результатом станет только число 50.

Смена имен по маске из файла BAT

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

for /f "tokens=*" %%a in ('dir /b PATH\*.*') do ren PATH\%%a Prefix%%a

Требуется выполнить некоторые замены в зависимости от конкретной ситуации. Вместо PATH\ устанавливается расположение документов, название которых должно быть изменено. Prefix требуется заменить на символы, добавляемые к файлу в процессе смены имени. Важным условием является расположение самого файла BAT. Он не должен находиться в папке, где происходит переименование, иначе название документа будет изменено. Другой особенностью является работа с подпапками. Они не смогут избежать общей процедуры смены имени и к названию также добавится префикс.

Имеется возможность осуществить процедуру исключительно по отношению к некоторым типам файлов. Для этого в прописанной ранее строке надо изменить *.* на другой вариант – после звездочки указывается интересующее расширение (*.txt или иное). Это позволит переименовать только документы определенного вида. Пример с несколько другим подходом написан ниже:

set thePATH=C:\test

for %%I in (*.txt) do ren "%thePATH%\%%~nxI" "%%~nI.dat"

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

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

hostname

Команда предусматривает возврат имени устройства, на котором произошел её запуск.

Изменение IP адреса устройства из пакетного файла

Чтобы изменить IP адрес компьютера, следует применять команду netsh. Начать подобные мероприятия можно только после того, как станет определены текущие настройки. Требуется получить IP адрес на данный момент:

netsh interface ip show address

Происходит выдача текущей конфигурации. Нам необходимо узнать название применяемого интерфейса. В качестве примера это может быть FASTNET. Далее будет предполагаться необходимость изменения IP адреса на 172.22.0.33 (шлюз 172.22.0.1, маска 255.255.255.0). Предусматривается следующая строка в пакетном файле для выполнения поставленной задачи:

netsh interface ip set address name="FASTNET" static 172.22.0.33 255.255.255.0 172.22.0.1 1

Обработка команды повлечет изменение IP адреса у интерфейса FASTNET на 172.22.0.33. Это и является искомой задачей. Указанная команда предлагает весьма широкие возможности в плане работы с сетевыми настройками.

Автоматизация удаления документов по типу

Задача очистки жесткого диска от временных файлов может быть решена с помощью следующей строки:

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

Следует разъяснить используемые параметры

/f

Происходит удаление всех документов, даже при наличии у них атрибута «только чтение»

/s

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

/q

Не всплывает окна, просящего подтверждения действиям удаления.

C:

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

*.tmp

Тип удаляемых документов.

Следует аккуратно использовать параметр /q. С ним удаление будет происходить без каких-либо запросов и это может привести к весьма неприятным последствиям.

Отправка сообщения непосредственно из файла BAT

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

net send name Message text

Здесь параметр name означает название некоторого устройства, куда будет отправлено сообщение. В качестве самого сообщения следует прописать информацию Message text. Важно учитывать применяемый алфавит. Когда осуществляется работа с кириллицей, нужно применять кодировку MS-DOS (866 кодовая страница) или любую аналогичную ей. В ином случае, следует приготовиться к выдаче набора ничего не значащих символов. Таким образом, рекомендуется применять соответствующие типы текстовых редакторов.

В качестве примера подобной программы можно отметить FAR. Следует выполнить открытие пакетного документа через этот текстовый редактор за счет нажатия клавиши F4 или выбора соответствующего пункта. Указывается кодировка DOS – она исключает проблему невозможности распознания символов системой.

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

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

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

call 2.bat

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

pause

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

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

start 2.bat

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

Отключение выдачи на экран команд в процессе осуществления пакетного файла

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

Требуется рассмотреть это на примере. Допустим, в пакетном файле имеется строка

echo Testing

На экран предусматривается выдача echo Testing, а потом результат деятельности команды – слово Testing. Можно написать внутри пакетного документа следующие сведения:

@echo Testing

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

@echo off

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

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

Существует способ осуществления задачи автоматизации. Предполагается использование перенаправления необходимого ответа в команду. Далее будет на примере рассмотрено подобное действие. Требуется создать на диске С обычную папку Folder и внутрь неё осуществим помещение любых 2х документов.

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

del C:\Folder

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

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

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

echo Y|del C:\Folder

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

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

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

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

@echo off

echo Start %time%

echo Create test.txt

echo test>C:\test.txt

echo Copy Test.txt to Old_test.txt

copy C:\test.txt C:\Old_test.txt

echo Stop %time%

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

Первой строкой задается отключение вывода команд. Это позволит получить в лог-документе исключительно результаты осуществления.

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

Третьей строкой указывается на то, что следующей командой будет создаваться текстовый документ test.txt.

Четвертая строка предназначена для того, чтобы непосредственно осуществить поставленную задачу. Следующим этапом производится запись в него одного слова – test.

Пятая строка проводит выдачу в лог-документ пояснение о том, что следующим этапом станет происходить копирование в иное место.

В шестой строке осуществляется непосредственное копирование C:\test.txt в файл C:\Old_test.txt. Можно говорить о том, что происходит создание копии документа, но с присвоением для него нового названия.

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

Требуется рассмотреть дальнейшие возможности по модификации предложенного набора команд. Часто возникает запрос на выполнение хранения подобных документов в специально предназначенной для них папке. Каждый день должна производиться запись отчета с присвоением для него нового названия. Оптимальный вариант – это использование имени, состоящего из некоторого слова и автоматически добавляемой к нему текущей даты. Сам файл можно назвать 1.bat и сохранить.

Теперь создадим на диске папку LOG и полный путь к ней станет иметь указанный вид: C:\LOG. Следующим этапом происходит запуск команду установленного типа:

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

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

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

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

Предполагается, что сразу после начала работы 1.bat в папке C:\LOG произойдет создание документа с названием, которое включает текущую дату. Именно указанный файл и требуется установить в качестве отчета о деятельности пакетного файла 1.bat. Если запустить рассмотренный BAT файл, то предполагается предоставление указанного далее результата:

Start 19:03:27,20

Create test.txt

Copy Test.txt to Old_test.txt

Скопировано файлов: 1.

Stop 19:03:27,21

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

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

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

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

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

MD FolderName

Когда такая команда будет осуществлена, предполагается образование новой папки FolderName. Она помещается туда же, где располагается файл BAT. Вовсе не обязательно обеспечивать подобную привязку. Допускается создавать папку в любом указанном пользователем месте, что и внесено в следующую команду:

MD D:\FolderName

Разрешается применять системы переменных в тех случаях, когда выполняется создание папок. Пример заключается в следующем – требуется создать папку в корне жесткого диска D с названием в виде имени текущего юзера. Задается вот так:

MD D:\%USERNAME%

Дальнейшее усложнение команды предписывает создание папки с именем юзера на системном диске устройства:

MD %SYSTEMDRIVE%\%USERNAME%

Ниже рассматривается вариант, когда в качестве названия для папки применяется дата на момент выполнения пакетного файла.

set datetemp=%date:~-10%

MD %SYSTEMDRIVE%\%datetemp%

Нужно выполнить рассмотрение того, каким именно образом происходит функционирование набора команд. Первой строкой создается специальная переменная datetemp. Когда работы завершатся, она удаляется, но до этого момента играет важную роль. Предусматривается корректировка значения переменной на протяжении всего времени её существования. В строке осуществляется присвоение значения, представляющего собой десять символов с правой части от системной переменной DATE. Используется формат представленного типа: Дн ДД.ММ.ГГГГ. Сначала слева идет указание недель и оно не представляет интереса. При создании папок открывается большое количество путей, которыми разрешается следовать. Это открывает большие возможности перед пользователями. Если Вы хотите увидеть перечень всех переменных, следует применить команду SET.

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

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

@echo Start file>C:\1.txt

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

set datetemp=%date:~-10%

@echo .>%SYSTEMDRIVE%\%DATETEMP%.txt

Работа начинается с того, что создается некоторая переменная, которая получает название datetemp. Для неё производится задание десятка символов с правой части системной переменной DATE. Это позволяет обеспечить применение исключительно действующих дат. Во второй строке указывается перенаправление (.) в документ. Его название получается за счет использования значения переменной datetemp. Должно быть указано TXT расширение, поскольку требуется получить текстовый документ.

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

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

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

Процесс автоматизации запуска файлов BAT

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

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

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

Применяемые в документах BAT команды

Как уже упоминалось, допускается использовать все команды, некоторые из них предназначаются специально для работы в пакетных файлах. Можно ознакомиться с полным перечнем. Для этого предполагается получить доступ к командной строке. Это можно сделать через Пуск > Выполнить > CMD.

Предусматривается несколько вариантов получения сведений:

help

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

help AT

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

start название_документа.txt

Если осуществить запуск подобной команды, то произойдет открытие название_документа.txt. Важным моментом является тот факт, что пакетный файл окончит свою деятельность. Использование подобного метода является оправданным в тех случаях, когда объемы лог-файла невелики.

Создание BATCH файла

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

@echo This batch file

@pause

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

This batch file

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

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

Команды bat файла | Компьютерная помощь

В прошлом материале Мы пробовали создать bat файл в Windows 7, 8, теперь пришло время рассмотреть bat команды. В основном  тут используются  команды вводимые в cmd, но есть и такие, которые нет смысла использовать в командной строке.

Как получить полный список bat команд

Для описания всех команд потребуется написать целый ряд статей, чтобы Вас сильно не нагружать ограничимся в рамках одной статьи и рассмотрим компактную информацию. Как известно, команды bat файла  и cmdодни и те же, чтобы получить их список запустите cmd в Виндовс 7 или командную строку в Windows 8. Введите команду справки, которая по-английски пишется как help, нажмите Enter. В результате компьютер в интерфейсе cmd пропишет все команды с кратким описанием.

Ознакомившись с данным списком, Вы захотите узнать поподробнее, что представляет собой определенная bat команда. Например, выберем команду for, для ее описания введем help for или for /? и кликнем энтер. В результате Вы получите оперативную справку по команде, она объемная, поэтому потребуется нажать несколько раз любую клавишу, чтобы ознакомиться с последующим описанием. Таким образом, можно изучить синтаксис той или иной команды.

Команды bat файла

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

@Все выполняемые bat команды выводятся на экран, чтобы убрать лишнее, перед командой ставится «собака». Часто используется с @echo off.
setЗадает переменные. Например, setper=c:\windows здесь per присваиваем путь. В переменную можно записать громоздкое значение и указать ее в сценарии, что сделает код компактнее. Если ее содержание изменится, тогда не придется менять везде значения, где предусмотрена эта переменная.
::Один из двух методов комментирования в bat файле без вывода этой строки на экран.
:LABELПри добавлении к слову двоеточия, создается метка, которая позволяет перейти к разным разделам батника. Метка может носить другое название, LABEL это пример.
CALLBat команда, вызывающая один пакетный файл в другом. Все параметры, описанные в одном из файлов, могут быть переданы друг другу.
CHOICEКоманда выбора.
CLSОчищает содержимое командного интерпретатора, что выведено на экран выше  CLS.
ECHOВыводит сообщение на экран. Например, «ECHO Привет!» выведет «Привет!». Если не использовать @ECHO off в начале пакетного файла, тогда Вы увидите путь к bat файлу и два сообщения, что является излишним. Вы можете создать пустую строку введите ECHO. с точкой в конце.
EXITЗавершает текущий пакетный сценарий.
GOTO LABELИспользуется для перехода к определенной метки, в данном случае к LABEL и исполняет сценарий после нее.
IFКак и в языках программирования batкоманда ifолицетворяет выполнение условия, в зависимости от которого сценарий пойдет по тому или иному пути. С синтаксисом знакомьтесь в справке.
forЦикл, используемый для организации выполнения одних и тех же действий.
PAUSEЕсли необходимо ознакомиться с результатом сценария, а он выполняется, и окно быстро закрывается, тогда используйте PAUSE. Она позволит посмотреть результат и завершить сценарий по нажатию любой кнопки.
REMВторой способ комментирования. В отличии от :: печатается на экране, если нет конструкции @ECHO off.
SHIFTИзменяет  положение пакетных параметров в bat файле.
STARTЗапускает программы, окна и т.д. Имеет множество атрибутов (смотрите справку).

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

Посмотрите еще статьи:

Вы можете пропустить чтение записи и оставить комментарий. Размещение ссылок запрещено.

Пакетные командные файлы. Создание BAT файлов. Команды if, for, goto

Всем привет. В этой статье, мы поговорим на такие темы как : Пакетные командные файлы, создание BAT файлов, Команды if, for, goto.

Пакетные командные файлы.

Пакетно командный файл (batch — файл, пакет) — является особой категорией исполняемых файлов, такие файлы имеют расширение *.bat. В отличие от *.exe и *.com — пакетные командные файлы содержат не машинные коды, а текст который интерпретируется командным процессором.

Пакетно командный файл может содержать:

  1. Внутренние команды (команды работы с файлами и каталогами и системного назначения).
  2. Внешние команды.
  3. Специальные команды, выполняемые только когда прописаны в самом пакетном файле.
  4. Команды ветвления (if).
  5. Метки перехода (goto).
  6. Обращения к исполняемым файлам и вызов других пакетных файлов.

Каждой внешней команде должен соответствовать физический файл на диске…

Создание BAT файлов:

  • С помощью команды copycon имя_файла.bat.
  • Используя команды редиректа (>, >>).
  • С помощью редакторов (блокнот).
  • Используя команду edit имя_файла.bat.

Вызов пакетного файла:

  1. Двойным кликом мыши.
  2. С помощью командной строки, находясь в каталоге где расположеный файл, набрав имя_файла.bat.

Теперь разберем создание BAT файлов на примере. Создадим командный файл, который выполняет отчистку экрана, сообщает текущую версию операционной системы, переходит на диск С и выводит содержимое текущего каталога с паузами при заполнении экрана. Открываем блокнот и начинаем писать наш файл. Команда отчистки экрана это естественно CLS, далее выводим версию ОС с помощью комманды VER, переходим на диск С:, и выводим его содержимое с паузами использовав команду dir и ключ /p.

В общем код получиться вот такой:

cls
ver
c:
dir/p

Команды if, for, goto.

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

if — Позволяет проверить условие и выполняет ветвление в зависимости от результата проверки.
for — Обеспечивает циклическое выполнение команд.
goto — Позваляет передавать управление на метку и тем самым осуществляет повторное выполнение участков командного файла или наоборот, обходит некоторые участки.

Теперь давайте расмотрим пример написания bat файла с использованием некоторых из основных команд. Наша задача будет заключаться в том, чтоб создать bat файл, который проверяет наличие файла AIDSTEST.EXE в каталоге TOOLS диска С, если файл найден\ненайден должно выводиться сообщение о результате поиска.

В общем код получиться вот такой:

C:
CD TOOLS —/переход в каталог TOOLS/—
IF EXIST AIDSTEST.EXE GOTO MI —/проверка файла AIDSTEST.EXE/—
ECHO ФАЙЛ AIDSTEST.EXE не найден. —/вывод на экран сообщения/—
GOTO END —/переход на метку END/—
:MI —/метка/—
ECHO ФАЙЛ AIDSTEST.EXE найден. —/вывод на экран сообщения/—
:END —/метка/—

На этом данную статью я заканчиваю, надеюсь, вы полностью разобрались с темами: Пакетные командные файлы, создание BAT файлов, Команды if, for, goto.

Пакетные файлы

Главная / Ассемблер / Для чайников / Быстрый старт / MASM, TASM и WASM /

ПРИМЕЧАНИЕ
Рисунки на этой странице не отображаются, но вы можете найти их в книге.

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

Существенно упростить эту процедуру можно с помощью старых добрых BAT-файлов (их ещё называют пакетные файлы). BAT-файл (или пакетный файл) – это обычный текстовый файл с расширением BAT, в котором записываются команды для выполнения операционной системой. Точно также, как вы это делаете в командной строке. Только в BAT-файле можно записать сразу несколько команд, и все эти команды затем можно выполнить щелчком мыши. Для любопытных рекомендую ознакомиться с контрольной работой по BAT-файлам, где приведены примеры создания относительно сложных файлов. Набравшись немного опыта, вы можете создать универсальный BAT-файл, который позволит вам быстро ассемблировать и компоновать ваши исходные тексты на языке ассемблера. Отсюда следует, что создание BAT-файла сводится к созданию обычного текстового файла.

Но здесь мы создадим простейший BAT-файл, с помощью которого «лёгким движением руки» мы выполним ассемблирование и компоновку, и создадим исполняемый файл типа COM с помощью ассемблера MASM. Итак, откроем наш любимый текстовый редактор (у меня это PSPad, вы можете воспользоваться блокнотом). Создадим новый файл и напишем там следующий текст:

 C:\MASM611\BIN\ml /c atest.asm
 PAUSE
 C:\MASM611\BINR\link /TINY atest.obj,,NUL,,,
 PAUSE
Здесь команда PAUSE приостанавливает выполнение команд BAT-файла и выводит сообщение «Для продолжения нажмите ENTER…». Само собой, что команды продолжат выполняться после нажатия на ENTER.

Сохраним этот файл с расширением BAT в том же каталоге, где у нас находится исходный файл atest.asm. Назовём его, например, com_create.bat. В результате папка с исходными файлами в проводнике будет выглядеть примерно так, как показано на рис. 1.10.

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

Теперь выполним этот BAT-файл обычным для Windows способом, то есть дважды щёлкнем по нему левой кнопкой мыши. Что же произойдёт? Операционная система начнёт поочерёдно выполнять команды, записанные в пакетном файле. Сначала выполнится ассемблирование (создание объектного файла). Затем выполнится команда PAUSE. Эта команда здесь для того, чтобы вы могли посмотреть результат ассемблирования. После нажатия клавиши ENTER выполнится компоновка (создание исполняемого файла типа COM, то есть создание готовой программы). Затем снова будет пауза, чтобы вы могли увидеть результат. На экране это будет выглядеть примерно так, как показано на рис. 1.11.

Конечно, пути в вашем случае будут другими. Как видим, сначала выполняется ассемблирование:


 Assembling: attest.asm
Затем выполняется команда PAUSE:

 ПутьКВАТФайлу>PAUSE
После нажатия ENTER выполняется компоновка:

 LINK: warning L4045: name of output file is ‘atest.com’
Здесь нам сообщают, что компоновщик создал выходной файл attest.com. В чем мы и можем убедиться, заглянув снова в наш каталог с исходными файлами.

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

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


Pers.narod.ru. Программы. BAT-файлы. Командные файлы в DOS/Windows

Pers.narod.ru. Программы. BAT-файлы. Командные файлы в DOS/Windows

Этот сайт больше не обновляется. Подключите Javascript, чтобы увидеть новый адрес страницы или перейдите к статье

Материал по теме «Командные файлы»

 1. Определение командного файла. Командные (пакетные) файлы - особая категория исполняемых файлов. 

Расширение: *.bat (от англ. batch - "пакет", "группа").  Запуск командного файла осуществляется  так же, как запуск исполняемой программы, то есть, указывается имя файла и, если требуется, параметры.

Назначение: BAT-файлы служат  для организации взаимодействия пользователей с прикладными  программами.

Состав: текст,  который интерпретируется командным процессором. Строки этого текста могут представлять собой:

  • внешние или внутренние команды ОС;
  • обращения к исполняемым программам *.COM или *.EXE, и вызовы других командных файлов;
  • команды для управления выдачей на экран, а также для организации ветвлений и циклов;
  • метки, на которые совершается переход при выполнении заданного в файле условия.

Каждая команда находится на отдельной строке.

 2. Команды пакетной обработки.

 а) REM                  комментарий в тексте файла. Обычно используют, чтобы временно убрать из текста какую-либо команду. Формат: REM [любая строка]

б) ECHO                               вывод на экран сообщений. Формат: ECHO [ON или OFF или Сообщение]

Параметры ON и OFF включают и выключают выдачу на экран системных сообщений ("эха").  Команда  ECHO  OFF используется, чтобы не  "засорять"  экран  при исполнении BAT-файла. Произвольная строка после ECHO  понимается как сообщение и без  изменений  выводится  на  экран.  Пустая  строка обозначается одной точкой. Примеры:

echo.                                                     Перейти к следующей строке;

echo Программа  не  найдена!       Выдает на экран сообщение "Программа не найдена!".

в) @.  Может быть только первым  символом строки и подавляет ее выдачу на экран.  Используется  только  в пакетном режиме. Пример:

 @echo off                           Выключаем "эхо"; из-за символа @ сама команда echo off тоже не выводится  на  экран;  этой  строкой  обычно начинаются командные файлы.

г) PAUSE              приостанавливает  вывод  на  экран,  выводит сообщение  "Нажмите любую клавишу..." и ждет нажатия любой клавиши.  Параметров не имеет.

д) IF  позволяет  проверять  условие  и  выполнять  ветвление  в  зависимости от результата проверки.

Общий вид команды: IF [NOT] [условие] [действие],  где "действие"  - любая команда,  выполняемая,  если истинно условие. Условие записывается в одной из трех форм,  поэтому команда IF имеет три формата.

Формат 1.  Проверка кода завершения  последней  перед  оператором  IF  команды. Используется конструкция следующего вида:  IF ERRORLEVEL число

Любая программа может  выработать в момент своего окончания собственный код завершения, который доступен  другим  программам  через переменную с именем ERRORLEVEL. Большинство команд и программ при нормальном  завершении устанавливают errorlevel=0. Задав условие if errorlevel 1, Вы  определите,  что  оно  будет выполнено,  если программа вырабатывает код  завершения больший, либо равный 1.

Формат 2. Проверка наличия файла в каталоге. Оператор IF имеет вид: IF EXIST имя файла

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

Формат 3. Сравнение двух строк. Оператор имеет вид:  IF [строка_1]==[строка_2]

Условие выполняется, если строки 1 и 2 совпадают. Чтобы застраховаться от случая,  когда одна из строк оказывается пустой, обе строки заключают в одинаковые символы, например, в квадратные скобки.

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

if exist c:\autoexec.bat type c:\autoexec.bat 

если в головном каталоге диска c: есть файл autoexec.bat, вывести его на экран;

if not exist c:\WORK\*.* echo Нет файлов!

если в каталоге WORK нет ни одного файла, вывести соответствующее сообщение;

format a:

if errorlevel 1 echo Форматирование прошло не безупречно!

если программа format установила errorlevel больше  нуля,сообщить  об ошибке;

if %A%==Yes cls

если переменная с именем A равна строке 'Yes',  очистить экран.

Аналогично команда IF может использоваться из командной строки.

е) GOTO позволяет передавать управление на  заданную метку  Формат команды:  GOTO метка

Метка  начинается со знака : Пример:

if  %A%==Yes goto Clear

goto Not_Clear

:Clear

cls

:Not_Clear

Если переменная A совпадает со строкой Yes,  перейти на метку Clear и очистить экран. В противном случае пропустить очистку экрана.

ж) CALL осуществляет вызов одного командного файла из другого с последующим возвратом в вызывающий файл. Формат команды:  CALL [имя файла]

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

Вызывающий командный файл: (example.bat)

@echo off

echo Файл запущен!

call version

echo Продолжаем!

Вызываемый командный файл: (version.bat)

@echo off

echo Ваша версия операционной системы:

ver

pause

example.bat вызывает version.bat, после выполнения которого вновь получает управление.

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

1) переменная,  определяемая в цикле. Ее имя состоит символа процента (в старых версиях DOS/Windows - двух символов) и последующих букв,  например, %A. Набор значений, которые последовательно принимает такая переменная,  задается при ее определении в команде for (см. ниже).

2) переменная окружения. Она определяется  внутренней командой DOS вида

SET [имя]=[значение],

где имя и значение - произвольные строки,  и в течение  всего  сеанса работы хранится в специальной области памяти,  называемой "системным окружением".  Системное окружение  управляется  командным  интерпретатором command.com.  Чтобы  использовать переменную окружения в командном файле нужно ее имя заключить в символы процента %, например, командами

set weekday=sunday

echo %weekday%

переменной с  именем weekday присваивают значение sunday и выводят ее значение на экран командой ECHO.  Для удаления переменной  из  окружения используют строку вида set имя=

Для просмотра окружения можно использовать команду SET без параметров.

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

  • winbootdir Главный каталог ОС Windows (в версиях NT/2000 может называться SystemRoot)
  • COMSPEC Полное имя текущего командного процессора
  • PROMPT Вид строки приглашения диалогового режима
  • TEMP Каталог для временных файлов (иcпользуется также TMP)
  • PATH Список путей, по которым ищутся исполняемые программы, если путь не указан при запуске программы. По умолчанию программа ищется сначала в текущей папке, затем в папках, перечисленных в PATH. Пути разделяются символом ;

 и) FOR обеспечивает циклическое выполнение  команд.  Формат:  FOR переменная IN (набор) DO действие

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

For %a in (*.txt) do copy %a con

Переменной %%a  последовательно присваиваются имена файлов с расширением txt из текущего каталога и каждый файл выводится на экран.

for %r in (*.*) do if exist a:\%r echo %r есть на диске a:

Команда перебирает файлы текущей директории и выясняет,  есть  ли  на диске a:  файл с таким же именем. Если такой файл существует, печатается сообщение. Вместо переменной %%r в команде ECHO каждый раз подставляется очередное имя файла.

for %z in (0,1,2,3,4,5,6,7,8,9) do if %z==%test% echo z=test=%z

Если переменная %z, принимающая значения цифр от 0 до 9, совпадает с переменной окружения test, печатается сообщение.

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

FOR %A IN (*.txt) DO TYPE %A

Все найденные в текущей директории файлы с расширением TXT последовательно выводятся на экран.

 к) Параметры командного файла.  При запуске  из  командной  строки командному файлу могут быть переданы параметры.  Они разделяются пробелами  и  количество  их не может превышать девяти.  Изнутри пакетного файла параметры доступны через строки вида %0,  %1,  ...,  %9, где %0 - имя самого  командного файла,  %1 - имя первого параметра и так далее.  Например, мы  запускаем командный файл MOVA.BAT командой mova.bat *.tmp *.txt *.doc

После запуска параметр %0 равен  строке  "mova.bat",  параметр  %1 - строке "*.tmp" и т.  д. Наш командный файл должен перемещать файлы, подходящие под переданные ему маски,  на диск a:. Для первого параметра это легко сделать двумя командами:  copy %1 a:\%1 и del %1.  Первая копирует  файлы на диск a:,  вторая уничтожает источник копирования.  Для  второго  параметра мы могли бы повторить те же команды, подставив в них %2 вместо  %1. Но программа сразу же становится нерациональной, тем более, что число параметров заранее неизвестно.  Помочь нам может команда SHIFT, которая сдвигает параметры командного файла на один влево.  После применения SHIFT параметру %0 присваивается старое значение %1,  в нашем случае это  строка "*.tmp",  а параметр %1 принимает значение "*.txt".  Теперь этими  же  двумя командами мы можем обработать любое число параметров.  Позаботившись об условии выхода из программы, получаем ее окончательный текст:

@echo off

:LOOP

copy %1 a:\%1

del %1

shift

if not [%1]==[] goto LOOP

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

 л) Дополнительные средства для написания командных файлов.

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

В состав большинства версий DOS/Windows включена внешняя команда choice, служащая для выбора действия. Формат команды:

CHOICE [/C:клавиши] [/N] [/T:выбор,время] [сообщение]

Здесь сообщение - любая строка текста,  клавиши  -  список  буквенных  обозначений  клавиш,  допустимых  для  выбора.  По умолчанию прописные и  строчные буквы не различаются,  а если список клавиш не указан, принимается /C:YN.  Параметр /N запрещает вывод после сообщения списка клавиш и  знака вопроса,  а после параметра /T могут быть указаны выбор, принимаемый при отсутствии ввода с клавиатуры и время в секундах,  через которое  он будет сделан.

Результат работы команды - установка значения ERRORLEVEL  равным  порядковому номеру в списке выбранной клавиши.  Например,  после ввода команды

choice /c:01 /n /t:0,5 Продолжить?(1-да,0-нет)

значение ERRORLEVEL будет установлено в 1 при нажатии клавиши  0  или  отсутствии ввода с клавиатуры в течении 5 секунд,  а при нажатии клавиши 1 программа установит значение ERRORLEVEL, равное 2.

Скачать CHOICE.COM в архиве ZIP (2 Кб)


пакетных файлов MS-DOS

Условный (3)
И это, пожалуй, тот момент, который можно назвать «высшая автошкола»…
Но сначала немного необходимой теории.

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

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

 IF ERRORLEVEL команда exit_code или ЕСЛИ НЕ ОШИБКА команда exit_code 

Exit_code здесь натуральное число, команда это команда которая должна быть выполнена. Эта форма инструкции будет выполнять указанную команду только при последнем выполнении . команда вернет код выхода, больший или равный указанному числу (при использовании НЕ меньше указанного числа).
Мы будем использовать эту форму условного оператора только для тестирования кода. вывод команды CHOICE , который используется MS-DOS для команды всевозможные вопросы. Синтаксис команды следующий:

 ВЫБОР[/C:ответы][/N][/T:Z,XY][/T:Z,XY][текст] 

Что делает команда ВЫБОР ? После подачи команды ВЫБОР без аргументов на экране Отображается «[Д, Н]?». тогда программа будет ждать, пока вы ее не нажмете одна из букв «Т» или «Н».Выдача команды вида CHOICE /C:12A* подойдет написание текста "[1,2, A, *]?" и ждет, пока программа не нажмет любой заданный символ. Если мы дадим определенный текст, программа напечатает его, а затем отобразит допустимый список ответы. Если вы используете опцию «/N», опция списка ответов не будет отображаться. «/ T» указывает эквивалент Z по умолчанию через XY секунд.
После подачи команды:

 ВЫБОР / C: ABX / N / T: 0,5 "Тип школы? [A-базовый, B-красный, X-нет]:" 

«Тип школы? [A-начальная, B-средняя, ​​X-нет]:» появляется на экране, а затем программа будет ждать нажатия одной из клавиш A, B, X максимум 5 секунд - Невыбор какого-либо ответа равносилен выбору ответа по умолчанию, т.е. отвечает X .
Программа после выбора соответствующей клавиши или по истечении допустимого времени завершает свою задачу действие, возвращая код выхода в операционную систему, который является номером ответа на заданного списка, т.е. после выбора A программа вернет 1, после выбора B цифры 2, после выбора Х числа 3.

Пример :
Напишите командный файл, который сможет запускать одну из трех программ, в зависимости от по выбору пользователя, например, Norton Commander или Windows.

 @ЭХО ВЫКЛ. :Начинать ЦЛС ЭХО _ ЭХО _ ЭХО [1]. Нортон Командир ЭХО [2]. Турбо Паскаль ЭХО [3]. Окна ЭХО [Q]. Выход ЭХО _ ЭХО _ ВЫБОР/C:123Q/N «Выберите программу для запуска:» ЕСЛИ ОШИБКА УРОВЕНЬ 4 ПЕРЕЙТИ В конец ЕСЛИ УРОВЕНЬ ОШИБКИ 3 ПЕРЕЙТИ К Windows ЕСЛИ УРОВЕНЬ ОШИБКИ 2 ПЕРЕЙТИ К Паскалю ECHO Norton Commander запускается... C:\NC\NC.EXE ПЕРЕЙТИ НА СТАРТ : Windows ЭХО Windows запускается... C:\WINDOWS\WIN.COM ПЕРЕЙТИ к концу : Паскаль ECHO Turbo Pascal запускается... C:\TP7\TURBO.EXE ПЕРЕЙТИ НА СТАРТ :Конец 

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

Обратите внимание на последовательность проверки кода выхода команды ВЫБОР . инструкции условное сравнение кода выхода от максимально возможного значения, т.е. 4, до значения предпоследний 2 - пропустить все ЕСЛИ равно выбору ответа первый. Этот способ проверки значения кода является следствием того, как он выполняется. условного оператора - если в первом операторе ЕСЛИ поставить код 2, то если бы это условие было выполнено, он бы только сказал, что ответ был 2, 3 или 4.Мона предположим, что мы всегда проверяем код выхода одним и тем же способом по значению от большего к меньшему - хотя можно конечно по другому.
Остается только добавить, что работает система Windows , пока работает Windows это скорее неосуществимо и закончится соответствующим сообщением. Однако это можно сделать при работе в режиме MS-DOS (режим MS-DOS отличается от Командная строка ). Тот, кто собирается это проверить, должен найти файл C:\autoexec.bat и на последней строчке этого файла пишет команду запуска указанный выше командный файл, например CALL C:\TEMP\mymenu.bat , затем " перезагрузка " компьютера.

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

 @ЭХО ВЫКЛ. ПЕРЕРЫВ НА : Удалить ЕСЛИ НЕ СУЩЕСТВУЕТ% 2 ПЕРЕЙТИ Можно изменить ВЫБОР /C:TN "Файл %2 уже существует.Удалить существующий файл" ЕСЛИ УРОВЕНЬ ОШИБКИ 2 ПЕРЕЙТИ В конец ДЕЛ% 2> НУЛ : Это изменчиво ЭХО Перемещение %1 в %2 РЕН% 1% 2> НУЛ ПЕРЕЙТИ к концу :Конец 

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

Инструкция по итерации FOR
Инструкции по итерации (повторение, также называемое циклами ) язык su программирование для многократного выполнения одних и тех же действий. Инструкции обычно общие итерация в цикле с известным или непредсказуемым числом повторений.Фраза «с известным числом повторений» требует некоторого пояснения. На известную сумму итерация означает количество, известное не на момент написания программы или командного файла, а только сумма, известная на момент запуска цикла. Например, если петля остается повторяется столько раз, сколько файлов содержится в текущем каталоге, хотя мы не можем предсказать сколько файлов будет содержать каталог, мы рассматриваем этот ptl как цикл с известным количеством повторений - ибо число t будет известно в начале цикла.Также обсуждалось ранее пример пакетного файла, который удаляет все файлы, указанные в качестве аргументов, является примером известное количество повторов - файл может быть запущен с любым количеством аргументов, однако однако этот номер всегда известен при запуске пакетного файла.
Вот пример цикла с повторяющимся числом, которое не может быть определено игрой:

 :Начинать ВЫБОР / C: TN «Повторить?» ЕСЛИ УРОВЕНЬ ОШИБКИ 2 ПЕРЕЙТИ В конец ПЕРЕЙТИ НА СТАРТ :Конец 

Цикл прерывается при нажатии клавиши «N» — невозможно предсказать из игры. сколько раз пользователь выберет ответ «Y».

Итеративная инструкция FOR пакетного файла представляет собой цикл с известным числом повторов. и следующий синтаксис:

 FOR %%X IN (список) DO команда 

Аргумент список является обязательным и содержит имена файлов, разделенные пробелами - эти имена могут содержать подстановочные знаки '?' а также '*'. После символов '%%' мы будем рассматривать так называемые переменная - эквивалент неизвестного в математике. Эта переменная будет принимать их все последовательно возможные значения из числа приведенных в списке (список) .Для каждого возможного значения переменной X будет выполнена команда команда .

Рассмотрим пример:

 [1] FOR %% A IN (1 2 3) DO DIR [2] FOR %%K IN (task.bat task.bak) TO DIR 

Каждая из вышеперечисленных инструкций будет иметь одинаковый эффект — команда будет выполнена три раза. ДИР . В примере [1] переменная A примет (получит) значение «1», а затем будет выполнена команда DIR .После выполнения команды переменная A получает свое значение "2" и команда будет выполнена снова. когда он заканчивается, переменная A получает значение "3" и команда будет выполнена. На этом выполнение команды FOR завершено.
В примере [2] будет точно так же, с той лишь разницей, что переменная примет вид значения «job», «job.bat» и «job.bak».

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

 FOR %%A IN (1 2 3 4 5 6 7 8 9 0) DO ECHO Значение переменной = %%A 

напечатает десять строк, содержащих текст «Значение переменной =» и соответствующие номера из списка.
Рекомендация

 ДЛЯ %%A IN (*.txt*.bak) ДЕЛАТЬ КОПИРОВАТЬ %%A C:\TEMP 

скопирует все файлы из текущего каталога с расширениями txt или bak в указанный каталог C:\TEMP .

Задачи, которые нужно решить самостоятельно

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

  1. Напишите пакетный файл, который переименует файл (например, list.txt) в то же самое, но с другим расширением.
  2. Напишите пакетный файл, который объединяет два произвольно выбранных файла в один файл. имя результат.txt .
  3. Напишите пакетный файл, который заменит содержимое двух произвольно выбранных файлов.
  4. Используя, среди прочего с помощью команд найти и отсортировать написать пакетный файл mydir.bat , который будет отображать содержимое текущего каталога. Они должны быть в распечатке. видны только файлы и каталоги. Распечатка должна сначала содержать списки файлы, за которыми следует список каталогов.И файлы, и каталоги должны быть отсортированы в алфавитном порядке. Запрещено любые варианты команды dir , но можно будут использовать временные файлы поддержки.
  5. Напишите пакетный файл mycopy.bat , используемый для создания копии файла под другим имя, при следующих предположениях:
    • файл работает только при запуске с двумя разными аргументами,
    • Если файл с тем же именем, что и имя копии, уже существует, копирование не выполняется.
  6. Напишите пакетный файл myren.bat , используемый для переименования в заданное имя, предполагая, что следующие предположения:
    • файл работает только при запуске с двумя аргументами,
    • если оба аргумента совпадают, если файл существует, не делайте ни действия, если файла нет, печатаем сообщение об ошибке,
    • если файл с тем же именем, что и новое имя файла, уже существует, напечатать сообщение об уходе.
  7. Напишите пакетный файл mycopy.bat , используемый для создания копии файла под другим имя, предполагая следующее:
    • файл может быть запущен с любым количеством аргументов,
    • если аргументы не указаны, вывести синтаксис,
    • , если первый аргумент "/?" пишем информацию о назначении и синтаксисе,
    • , если заданы аргументы и первый не "/?" то мы пытаемся сделать копию когда дано ровно два различных аргумента, иначе (когда дано более двух, т.к. задан один аргумент или когда аргументов два, но они одинаковые) выводим сообщение об ошибке,
    • Если файл с тем же именем, что и имя копии, уже существует, копирование не выполняется.
  8. Напишите пакетный файл myren.bat , используемый для переименования данного файла, предполагая, что следующие предположения:
    • файл можно запускать с любым количеством аргументов,
    • если аргументы не указаны, вывести синтаксис,
    • , если первый аргумент "/?" пишем информацию о назначении и синтаксисе,
    • , если заданы аргументы и первый не "/?" то мы пытаемся переименовать его когда задано ровно два аргумента, иначе (когда задано более двух, когда задан один аргумент или когда аргументов два, но одинаковые) мы печатаем сообщение будут
    • Если файл с тем же именем, что и копия, уже существует, удалите его, а затем мы меняем имя файла,
    • если два аргумента одинаковы и файл существует, эффект должен быть как если бы имя файла было изменено.

.

BAT-файл (что это такое и как его открыть) - Блог

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

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

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

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


Как открыть BAT

Хотя расширение .BAT немедленно заставляет Windows распознавать файл как исполняемый, файлы .BAT по-прежнему полностью состоят из текстовых команд. Это означает, что любой текстовый редактор, например Блокнот (входящий во все версии Windows), может открыть файл.BAT для редактирования.

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

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

.

cmd/c "отключить эхо | клип"

Вот еще один пример BAT-файла, который использует команду ping, чтобы узнать, может ли компьютер подключиться к маршрутизатору с этим конкретным IP-адресом:

пинг 192.168.1.1
пауза

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

Использование файла BAT в Windows так же просто, как двойной щелчок или двойное касание. Вам не нужно загружать какую-либо специальную программу или инструмент.

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

Второй пример с использованием команды ping пропингует этот IP-адрес; команда pause оставляет окно командной строки открытым после завершения процесса, чтобы вы могли увидеть результаты.

Если ваш файл не похож на текстовый файл, возможно, вы имеете дело не с файлом .BAT. Проверьте расширение файла, чтобы убедиться, что вы не путаете файл .BAK или .BAR (данные Age of Empires 3) с файлом .BAT.

Как конвертировать BAT

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

Вы можете преобразовать файл .BAT в файл .EXE с помощью нескольких инструментов командной строки. Вы можете прочитать, как это сделать, на How-To Geek.

  • Встроенная в Windows утилита IExpress предоставляет еще один способ создания файла .EXE из файла .BAT.
  • Хотя бесплатная версия является пробной версией, EXE в MSI Converter Pro может преобразовать полученный файл EXE в файл MSI (пакет установщика Windows).
  • Вы можете использовать бесплатный инструмент командной строки NSSM, если хотите запустить файл.BAT как служба Windows.
  • PowerShell Scriptomatic может помочь вам преобразовать код из BAT-файла в сценарий PowerShell.

Вместо того, чтобы искать конвертер .BAT в SH (сценарий оболочки bash) для использования команд .BAT в таких программах, как Bourne Shell и Korn Shell, попробуйте просто переписать сценарий с помощью Bash. Структура этих двух форматов сильно различается, поскольку файлы используются в разных операционных системах. Существует поток переполнения стека и это руководство по сценариям оболочки Unix для получения информации, которая может помочь вам переводить команды вручную.

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

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

То же самое следует сделать при создании нового файла .BAT в Блокноте, но наоборот: сохранить текстовый документ по умолчанию как .BAT вместо .TXT. В некоторых программах вам может понадобиться сохранить его в Все файлы , а затем дать ему расширение.ХЛЫСТ.


.

пакетный файл => Создать файлы с пакетом

Введение

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

Синтаксис

  • echo (пишите здесь что хотите) >> (имя файла)
  • echo (имя переменной) >> (имя файла)

Примечания

Если файл существует, > перезапишет файл, а >> будет добавлено в конец файла.Если файл не существует, оба создадут новый файл.

Кроме того, команда echo автоматически добавляет новую строку после строки.

Так

  эхо 1> num.txt эхо 1> число.txt эхо 2 >> число.txt  

создаст следующий файл:

  1 2  

Не это:

  1 1 2  

или

  1 2  

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

Перенаправление

Формат:

  [команда] [> | >>] [имя файла]  

> Записать вывод [команды] в [имя файла].

>> Добавляет результат [команды] к [имя файла].

Примеры:

  1. echo Hello World> myfile.txt пишет «Hello World» в myfile.txt

  2. echo your name is% name% >> myfile.txt добавляет «your name is xxxx» в myfile.txt

  3. dir C: \> directory.txt пишет каталог C:\ в directory.txt

Эхо для создания

файлов

Способы создания файла с помощью команды echo:

  ECHO. > example.bat (создает пустой файл с именем «example.bat») ЭХО-сообщение> пример.bat (создает example.bat, содержащий «сообщение») Сообщение ECHO >> example.bat (добавляет «сообщение» в новую строку в example.bat) (сообщение ECHO) >> example.bat (то же самое, что и выше, просто другой способ записи)  

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

  ЭХО Привет, как дела? > C:\Program Files\example.bat (Это НЕ создаст файл в папке «Program Files» и может показать сообщение об ошибке)  

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

  ECHO Привет, как дела? > "C:\Program Files\example.bat" (Это создаст «example.bat» в папке «Program Files»)  

Но что, если вы хотите создать файл, который будет генерировать новый файл?

  ЭХО-сообщение> файл1.bat> пример.bat (example.bat НЕ будет содержать «message> file1.bat») example.bat будет содержать только «сообщение».> файл1.bat> пример.bat (example.bat будет содержать «message> file1.bat»)  

То же самое касается других вещей в пакете

Следующий шаг требует знания переменных и инструкций:

щелкните здесь, чтобы узнать о переменных | щелкните здесь, чтобы узнать об операторах if и else

Переменные:

  SET example = "text" ECHO%пример%>file.bat (Это выведет «текст» в файл .bat)  

если мы хотим, чтобы отображался не "текст", а обычный %пример%, то напишите:

  ECHO ^%пример ^%> файл.| ЭХО Ложь> файл.bat Это выведет: IF% пример% == "Hello" ECHO True || ЭХО Ложь  

Если переменная "Hello", она скажет "True", ELSE скажет "False"

Сохранить несколько результатов команды

Использование нескольких команд ECHO для создания пакетного файла:

  ( эхо эхо привет, сегодня сегодняшняя дата эхо дата / T эхо эхо создано %DATE% эхо-пауза> ноль )> привет.bat  

Интерпретатор команд обрабатывает весь раздел в круглых скобках как одну команду, а затем записывает все выходные данные в h и s.хлыст .

hi.bat теперь включает:

  эхо привет, это сегодняшняя дата Дата / Т эхо создано [дата создания] пауза > ноль  
сообщить об этом объявлении .

Как написать пакетный скрипт в Windows (Как)

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

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

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

Пакетный файл — это просто текстовый файл, сохраненный с расширением .bat. Вы можете написать его с помощью Блокнота или более сложного текстового редактора, такого как Notepad ++, но не используйте текстовый процессор, такой как Microsoft Word.

Давайте создадим простой пакетный файл. Сначала откройте Блокнот. Введите следующие строки:

 ECHO OFF ECHO Hello World PAUSE 

Затем сохраните файл, нажав Файл > Сохранить.Дайте ему любое имя, которое вы хотите, но замените расширение файла txt по умолчанию на расширение .bat.

Например, вы можете назвать его hello_world.bat .

Теперь у вас есть пакетный файл с расширением .bat. Дважды щелкните, чтобы запустить его. Этот конкретный пакетный файл отключает ECHO (который очищает вывод, скрывая команды от печати в приглашении, печатает текст «Hello World» на экране, а затем ждет нажатия клавиши, прежде чем он завершится.

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

Написание более сложного пакетного файла

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

Например, предположим, что мы хотим написать пакетный файл, который запускает некоторые команды сетевой диагностики. Мы можем запустить ipconfig / all для просмотра информации о сети, ping google.com , чтобы узнать, отвечают ли серверы Google, и tracert google.com для запуска traceroute в Google.com и посмотреть, есть ли какие-либо проблемы на этом пути.

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

 ipconfig / all ping google.com tracert google.com PAUSE 

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

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

Вы также можете добавить команду "ECHO OFF" в начало файла. Обычно это добавляется в начало большинства командных файлов. Когда вы это сделаете, сами команды не будут напечатаны в командной строке, но результаты будут.Например, вы увидите сведения о сетевом подключении, но не строку «ipconfig/all». Большинству людей не нужно видеть команды, поэтому это может очистить вывод.

Вот как это может выглядеть:

 :: Этот пакетный файл проверяет наличие проблем с сетевым подключением. ECHO OFF :: Просмотр сведений о сетевом подключении ipconfig / all :: Проверить, доступен ли Google.com ping google.com :: Запустить traceroute для проверки маршрута до google.com tracert google.com PAUSE 

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

 :: Этот пакетный файл проверяет наличие проблем с сетевым подключением :: и записывает результат в файл.текст. ECHO OFF :: Просмотр сведений о сетевом подключении ipconfig / all >> results.txt :: Проверить, доступен ли Google.com ping google.com >> results.txt :: Запустить traceroute для проверки маршрута к google tracert google. com >> results.txt 

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

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

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

.

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

Пакетные файлы используются для выполнения определенных задач — чаще всего операций с файлами.Сохраняем командные строки в один текстовый файл с расширением -bat (Batchfile), содержимое которого интерпретируется операционной системой как последовательное выполнение команд.
Как создавать пакетные файлы?
Самый простой способ - использовать блокнот (Пуск-> Выполнить: "notepad.exe"), ввести определенные команды и сохранить файлы как: пакетный_файл.bat и выбрать опцию Сохранить как Тип: Все файлы.
Созданный таким образом файл запускается и обрабатывается как исполняемый файл (с расширением exe).

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

Содержание: Как создать пакетный файл.bat

Ключевые слова: как сделать пакетный файл, bat файл, создание bat файла, как создать пакетный файл, как сделать bat файл, пакетный файл, как сделать пакетный файл в cmd, bat файл как сделать

[Голосов: 33 Среднее: 3/5]
макенсис

С 2006 года главный редактор и администратор Tweaks.Glosbe Usosweb Research en Автор двух книг по операционным системам, ряда публикаций и советов по использованию компьютера. Выпускник факультета электроники. Увлеченный IT-специалист, позиционер и путешественник.

.

Создать BAT-файлы. Как создать bat-файл? Программы для создания и редактирования файлов bat

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

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

  1. Через командную строку.
  2. Использование Блокнота.
  3. Использование Dr.Batcher.

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

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

Внимание! Команда вводится без кавычек, пробел ставится только после использования МД. В этом случае папка называется « 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

режим консолей = 32 строки = 50

титульная звезда!

для %% i w (

8888888888888888888888888888888888888888888888888888888888888,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,

) делаем эхо %% и

пауза > ноль

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

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

Создайте пакетный файл с " Dr. Дозатор ""

Определенное программное обеспечение является платным, но пробная версия доступна в течение 30 дней.

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

Шаг 2 В диалоговом окне установите флажок «Пустой пакетный файл» и нажмите «ОК».

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

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

Шаг 4 Сохраните полученный файл в нужном каталоге.

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

Применение

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

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

Видео — создание файла Bat

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

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

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

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


Для этого:

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

  2. Введите ipconfig /flushdns и удерживайте в блокноте.

    Проверить! Использование инструкции «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: используется для копирования каталогов и файлов с дополнительными параметрами;
  • СТАРТ: запускает исполняемый файл .exe со стандартным приложением, открывает каталог;
  • FOR/IN/DO: используется для указания файлов;
  • MKDIR: создавать каталоги;
  • REM: ввести строку комментария в программу;
  • RMDIR: удалить каталоги;
  • DEL: удалить файлы;
  • COPY: копирование файла;
  • НАЗВАНИЕ: изменить заголовок окна.

В следующем примере показано использование некоторых из этих команд. Обратите внимание, что команда @echo off скрывает путь к команде, отображаемый cmd на экране DOS.

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

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

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

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

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

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

В одном каталоге может быть несколько папок с одинаковым именем.

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

  • Мозилла ~ 1;
  • Мозилла ~ 2;
  • Мозилла ~ 3.

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

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

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

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

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

Пример используемых клавиш, где: -minimum - клавиша, сворачивающая программу после ее запуска, - hide_splash - клавиша, сворачивающая программу в трей.

Проверить! Все про исполняемые файлы пишется с ними в bat файле на одной строке.

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

.

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

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

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

выпуск летучей мыши


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

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

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

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

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

Что такое бат и зачем он нужен?

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

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

Как создать bat-файл для запуска программы?

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

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

Например, запустим браузер. Сначала нужно ввести команду Пуск и написать Опера после пробела.

Это должно выглядеть так:

Запустить Opera

Это будет работать для программ, известных системе, но если вы запускаете программу, неизвестную системе, вам придется писать полный путь к программе. Например, если у вас установлен ftp в папке Program Files, для его запуска необходимо ввести команду

запустить файлзиллу

А если фтп клиент установлен в другую папку, то придется прописывать весь путь.

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

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

Функция бат очень полезна и иногда необходима. Благодаря ему можно писать целые программы с узким спектром действия. Область применения зависит только от знания команд и умения их комбинировать.Поэтому используйте и развивайте свои навыки и навыки работы с компьютером на уровне Суперпользователя.

Как вы знаете, операционные системы с графическим интерфейсом не всегда размещали компьютеры. Еще до их появления часто использовались 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-файл с помощью встроенного в систему файлового менеджера? Базовый!

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

Как создать BAT-файл в Блокноте?

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

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

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

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

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

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

Эпилог

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

Пакетные или пакетные файлы — это простые текстовые файлы, содержащие наборы команд интерпретатора и имеющие расширение bat или cmd (cmd работает только в операционных системах семейства NT).Вы можете редактировать такие файлы с помощью блокнота или любого другого текстового редактора.

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

@echo Этот командный файл
@pauza

Этот командный файл
Нажмите любую клавишу для продолжения...

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

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

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

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

.

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

имя начального файла.текст

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

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

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

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

Пакетные файлы

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

Как создать файл с любым именем из bat-файла

Символ перенаправления используется для создания файла при выполнении пакетного файла. Выглядит это так:
>
из них. для создания файла нужно перенаправить поток с экрана на файл. Вы можете сделать это с помощью следующей команды:

@echo Загрузочный файл > C:\1.txt

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

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

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

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

@эхо.> C:\имя_папки\%ИМЯ_КОМПЬЮТЕРА% .txt

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

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

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

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

MD D: \ Имя папки

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

МД Д: \%ИМЯ ПОЛЬЗОВАТЕЛЯ%

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

MD% СИСТЕМНЫЙ ДРАЙВ% \% ИМЯ ПОЛЬЗОВАТЕЛЯ%

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

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

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

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

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

@echo off
echo Start%time%
echo Создать тест.txt
echo test>C:\test.txt
echo Копировать Test.txt в Old_test.txt
копировать C:\test.txt C:\Old_test.txt
echo Stop%time%

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

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

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

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

"C:\Program Files\1.bat">C:\LOG\%data~-10%.txt
C:\Progra~1\1.bat>C:\LOG\%data~-10%.txt

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

Старт 19:03:27.20
Создать тест.txt
Скопировать Test.txt в Old_test.txt
Скопировано файлов: 1.
Стоп 19:03:27.21

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

Путь \ИмяФайла.bat> Путь\ИмяФайлаЖурнала.txt

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

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

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

Чтобы исправить такие неприятности, вы можете перенаправить желаемый ответ на команду. Те. выполните обратное действие, чтобы перенаправить вывод команды в файл.
Например, давайте посмотрим, как выглядит запрос на подтверждение потенциально опасного действия. Давайте создадим папку с именем Folder на диске C, например.Создайте или скопируйте в него любые два файла. Затем откройте командную строку и выполните следующую команду:

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

C:\Папка\* Продолжить?

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

эхо Y |удалить C:\Папка

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

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

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

Эта команда напечатает команду echo Testing, а в следующей строке ее вывода слово Testing.

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

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

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

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

Второй называется 2.bat и тоже содержит одну команду,

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

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

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

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

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

.

Net send name Текст сообщения

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

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

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

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

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

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

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

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

интерфейс netsh показывает IP-адрес

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

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

После выполнения этой команды интерфейс FASTNET изменит свой IP-адрес на 192.168.1.1.1.42.
Команда netsh предоставляет широкие возможности для управления сетевыми параметрами из командной строки. См. netsh/?help для получения дополнительной информации о его функциональности.

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

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

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

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

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

for /f "tokens=*"%%a in("каталог /b ПУТЬ\*.*") Do ren PATH\%%a Префикс %%a

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

Второй вариант:
установить thePATH=C:\test
для %%I в (*.txt) сделать "%thePATH%\%%~nxI" "%%~nI.dat"
Как использовать символ процента в пакете файлов

Чтобы использовать символ процента (%) в пакетном файле, необходимо ввести его дважды. Например,
echo 50%%%
Эта команда в bat-файле вернет 50%.Если вы используете команду echo 50%, на экране будет отображаться только 50.
Помните об этом при использовании символа % в пакетных файлах.

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

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

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

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

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

редакт.exe -s C:\environment.reg

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

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

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

set tempdate=%date:~-10%
date 01-01-04
блокнот.exe
данные% tempdate%

В этом примере текущая системная дата сначала сохраняется в переменной, затем (во второй строке) устанавливается системная дата 1 января 2004 г., а затем вызывается программа проверки системной даты. В данном примере это Блокнот. Пока Блокнот открыт, пакетный файл выполняется, он не завершается и не сбрасывает системную дату. После закрытия Блокнота пакетный файл продолжит выполнение и установит системную дату на значение, хранящееся в tempdate, т.е.к тому, который был до запуска пакетного файла.

Не забывайте, что если путь к файлу, с которым вы запускаете программу, содержит пробелы, то (путь) должен быть заключен в кавычки. Если путь содержит символы кириллицы, при написании пакетного файла следует использовать текстовый редактор, поддерживающий кодировку DOS (например, FAR). В противном случае при запуске батника вы получите сообщение "Указанный файл не является внутренней или внешней командой...".

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

установить tempdate =% date: ~ -10%
date 01-01-04
запустить notepad.exe
date%tempdate%

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

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

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

: проверить
, если c:\1 существует.txt goto goto
sleep 10
go to test
: goto
ноутбук

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

: проверить
если есть c:\1.txt перейти перейти
спать 10
перейти проверить
: перейти
переименовать c:\1.txt 1.txt
если не уровень ошибки 0 то перейти
del c:\1 .txt

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

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

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

.

Создание пакетных файлов - ИТ-специалист

Пакетный файл - программа для ЭВМ, выполняемая в пакетном режиме, т.е. без влияния пользователя на ход программы. Пакетный файл — это файл, в котором сохранена пакетная программа.

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

Примеры команд оболочки MS-DOS и Windows (интерпретатор команд):

  • ECHO - вывод текста на экран
  • КОПИЯ - копия файла
  • ДЕЛ - Удалить файл
  • DELTREE - Удалить каталог

Пример пакетной программы MS-DOS или Windows, в этом примере отображающей Hello World , выглядит следующим образом:

 @эхо выключено эхо привет мир Пауза конец 

Пример сценария с запросом имени и выводом соответствующего сообщения:

 @эхо выключено set /p name = Как тебя зовут? эхо привет%имя% Пауза конец 

и результат его работы:

 Как тебя зовут? Майкл привет майкл Нажмите любую клавишу для продолжения.. . 

Операторы командной связи

Инструкции в пакетных файлах

для - Выполнение команд в цикле

FOR / L% переменная IN (начало, шаг, конец) DO команда

Упражнения

для /l и пинговать компьютеры в сети.

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

  for /l %%p in (1,1,12) to (@ping -n 1 192.168.1.%%p|findstr/C:"Reply from")  

findstr - Поиск строк в файлах.

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

Если

Команда If используется для реализации условия в пакетных файлах. Если заданное условие выполняется, то выполняется команда, стоящая за условием, если условие не выполняется, эта команда не выполняется.

Синтаксис:

IF [NOT] ERRORLEVEL номер команды

ЕСЛИ [НЕ] строка1 == строка2 команда

ЕСЛИ [НЕ] СУЩЕСТВУЕТ команда имени файла

Звоните

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

Синтаксис:

ВЫЗОВ [диск:] [путь] имя файла [параметры]

.

Смотрите также

Только новые статьи

Введите свой e-mail

Видео-курс

Blender для новичков

Ваше имя:Ваш E-Mail: