В bat

Содержание

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

В bat
страницаПолезноеКомандная строка (CMD)Примеры 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

Источник: https://xn--80aa0aebnilejl.xn--p1ai/%D0%9F%D0%BE%D0%BB%D0%B5%D0%B7%D0%BD%D0%B0%D1%8F_%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8F/%D0%9A%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B0/bat_%D1%84%D0%B0%D0%B9%D0%BB%D1%8B_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B.html

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

В bat

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

Первая операционная система MS DOS, разработанная компанией Microsoft, не имела GUI, а управление выполнялось посредством ввода текстовых команд.

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

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

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

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

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

Итак, как создать bat-файл в Windows 7/10? Очень просто. Для этого понадобится любой текстовый редактор и знание основ командной строки.

Можно использовать Блокнот, а ещё лучше Notepad++, так как последний имеет подсветку синтаксиса.

Создайте в редакторе новый файл, в меню «Файл» выберите «Сохранить как», дайте будущему скрипту имя, а в выпадающем списке «Тип файла» выберите «Batch file (*bat; *cmd; *nt)».

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

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

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

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

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

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

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

start “” “C:/Program Files/Google/Chrome/Application/chrome.exe” timeout /t 05 start “” “C:/Program Files/Mozilla Firefox/firefox.exe” timeout /t 05 start “” “C:/Program Files/VideoLAN/VLC/vlc.exe” Команда start запускает исполняемый файл нужной программы, а команда timeout /t задаёт интервал между запусками.

Обратите внимание на расположение кавычек – в них берутся пути, в которых имеются пробелы.

Также если в пути есть кириллические символы, в начало скрипта следует вставить изменяющую кодировку команду chcp 1251, в противном случае интерпретатор не сможет правильно прочитать путь.

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

start /b “” “путь”

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

start /b “” “путь” pause

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

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

Поясняем.

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

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

del /A /F /Q “D:/data”

А можно и так:

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

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

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

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

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

Теперь вы знаете как создавать батники и имеете некое общее представление о языке интерпретатора CMD. Это были основы, теперь пришла пора познакомиться с некоторыми полезными особенностями работы с bat-файлами.

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

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

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

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

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

Скрипты, как и все приложения, можно запускать по расписанию. Команда timeout /t здесь не совсем уместна, для отложенного запуска лучше всего использовать встроенный «Планировщик задач» Windows.

Здесь всё просто. Открываем командой taskschd.msc Планировщик, определяемся с триггером, действие выбираем «Запустить программу» и указываем путь к bat-файлу.

Вот и всё, скрипт будет запущен в положенное время.

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

Самый простой заключается в следующем. Создаём на bat-файл ярлык, открываем его свойства и в меню «Окно» выбираем «Свёрнутое в значок».

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

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

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

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

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

Источник: https://viarum.ru/kak-sozdat-bat-fayl-v-windows/

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

В bat

Batch (.bat) файл — это инструмент, который сэкономит вам не один десяток часов рабочего времени. Узнайте сейчас как использовать пакетный файл на практике.

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

Что такое BAT файл?

Вы, должно быть, уже в курсе о существовании такой утилиты как “Командная строка” Windows, или CMD.

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

Тем не менее, несмотря на всю полезность инструмента, командная строка устраивает далеко не всех. Сложность утилиты и высокий порог вхождения делают ее “последним средством спасения Windows”.

Чтобы упростить процесс работы и сделать его более быстрым, Microsoft ввели посредника между “человеком” и “машиной”. Этим посредником стал пакетный файл (batch file). Запущенный на компьютере документ автоматически выполняет команды в CMD, ограждая пользователя от собственноручной работы. Процесс автоматизации назван пакетным сценарием (batch script).

Доступные форматы BAT файла:

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

В чем польза bat файла?

Автоматизация. Если раньше вам приходилось долго и нудно “вбивать” сложные коды в окно командной строки, пришло время расслабиться! BAT файл экономит время пользователя не только при работе с CMD, но и при взаимодействии с другими системами ПК.

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

Запланируйте отключение системы к моменту завершения установки и не опасайтесь за перерасход электроэнергии.

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

При создании BAT файла используется петля (for), условный оператор (if) и оператор управления (goto). Документ запускается либо с помощью командной строки, либо с помощью другого пакетного файла при использовании команды CALL.

Режимы BAT файла

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

Другой режим называется пакетным (batch mode). Он работает в классическом стиле и самостоятельно выполняет запрограммированные функции.

Режимы пакетного файла:

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

Используйте разные режимы в зависимости от ситуации.

Как запустить BAT файл в Windows 10?

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

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

  • Откройте директорию в которой лежит пакетный файл.
  • Определите название файла.
  • Откройте командную строку.
  • Введите название документа с его расширением.Например: HelloWorld.bat

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

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

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

Основы создания BAT файлов

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

Базовые команды:

  • titleИспользуется для создания заголовка. Отображается в верхней части окна командной строки.
  • echoРежим вывода команд на экран. При включении, командная строка выведет на экран сообщение о совершенном действии. При отключении, соответственно, сообщения пропадут. Обратите внимание, что вам придется контролировать статус echo. Если команда активирована на строке 2 и вы решили отключить ее на строке 22, 20 промежуточных строк будут содержать включенный режим вывода команд.
  • pauseИспользуется для остановки процесса.
  • exitПозволяет закрыть командную строку.
  • clsИспользуется для очистки окна командной строки.
  • ::

Источник: https://zen.yandex.ru/media/starusrecovery/kak-sozdat-paketnyi-fail-bat-dlia-vypolneniia-v-komandnoi-stroke-cmd-5e031ab611691d00b00e3e1c

Основы BAT файлов

В bat

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

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

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

SET =

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

SET BLASTER=A220 I5 D1 P330

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

ECHO %BLASTER%

на экран будет выведено “A220 I5 D1 P330”.

Переменные, определенные с помощью оператора SET называются переменными окружения среды (environment) и являются видимыми после выполнения до перезапуска DOS (если не изменять ее вручную в памяти).

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

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

%

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

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

abc.bat a bc def

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

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

Команда SHIFT позволяет использовать число параметров командной строки далее 10. Однако, при этом теряются соответственно более ранние параметры. Иными словами, команда SHIFT сдвигает все значения переменных на один шаг влево.

То есть, переменная %0 будет содержать значение, содержавшееся до этого в переменной %1, а переменная %1 – значение переменной %2 до сдвига.

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

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

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

if condition (

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

rem …

) else (

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

rem …

)

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

@echo off

set BUILDMODE=%1

if “%BUILDMODE%” == “” (

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

exit /b 1

)

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

set BUILDMODE=%BUILDMODE:-=%

if “%BUILDMODE%” == “debug” (

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-файла. Второй способ мне представляется более удобным – не очень здорово требовать от кого-то запуска твоего сценария с определенным параметром.

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

setlocal enabledelayedexpansion

if “%BUILDMODE%” == “debug” (

echo INFO: Setting up debug mode environment

set OPTFLAGS=/Od

set CCFLAGS=!OPTFLAGS! /MDd /Z7

) else (

echo INFO: Setting up release mode environment

set OPTFLAGS=/O2

set CCFLAGS=!OPTFLAGS! /MD

)

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

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

Функции

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

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

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

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

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

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

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

call /?

exit /?

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

@echo off

call :factorial %1

echo %RESULT%

exit

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

rem Вход:

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

rem Выход:

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

:factorial

if %1 == 0 (

set RESULT=1

exit /b

)

if %1 == 1 (

set RESULT=1

exit /b

)

set /a PARAM=%1 – 1

call :factorial %PARAM%

set /a RESULT=%1 * %RESULT%

exit /b

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

> factorial.bat 10

3628800

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

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

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

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

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

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

@ECHO OFF

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

PRG1.EXE

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

IF ERRORLEVEL 2 GOTO FILENOTFOUND

IF ERRORLEVEL 1 GOTO WRITEERROR

IF ERRORLEVEL 0 GOTO EXITOK

GOTO ONEXIT

:FILENOTFOUND

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

GOTO ONEXIT

:WRITEERROR

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

GOTO ONEXIT

:EXITOK

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

GOTO ONEXIT

:ONEXIT

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

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

Источник: https://webhamster.ru/mytetrashare/index/mtb0/1342078818biapwwgnsm

Учение основ cmd(bat) (ДЛЯ НОВИЧКОВ)

В bat

Хэллоу пикабушник. Я хочу, чтобы ты понял весь программный язык cmd(bat) на понятном языке. Ну, давай приступим?

Для начала Разберем, что такое cmd(bat) и с чем его едят?

Cmd.exe — интерпретатор командной строки ИНТЕРПРЕТАТОР – Тот, кто интерпретирует что-нибудь. ИНТЕРПРИРОВАТЬ Истолковать -вывать раскрыть -ывать смысл чего-нибудь, объясняя.

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

Как открыть командную сроку(cmd.exe)

нажмите сочетание клавиш WIN+R, введите cmd и нажмите кнопку Ok;нажмите кнопку «Пуск» введите в поле поиска «командная строка» и щелкните в результатах поиска «Командная строка» (можно ввести «cmd» и выбрать в результатах «cmd»);нажмите «Пуск» ⇒ «Все программы» ⇒ «Стандартные» ⇒ «Командная строка»;

открыть в Проводнике папку C:\Windows\System32 и запустить файл cmd.exe.

И так, давайте создадим на рабочем столе текстовый документ, а далее впишем в него

@Echo

Для вывода сообщения в BAT файлах используется команда echo: Вывод сообщений и переключение режима отображения команд на экране. ECHO [ON. OFF] ECHO [сообщение] Ввод ECHO без параметров позволяет выяснить текущий режим отображения команд.

В данном случае напишем @Echo off

После напишем такую строку A: Что это такое? Это так сказать, строка, позволяющая делать оборот(обратно выполнять функции,команды после этой строки)

Далее после A: напишем, echo HELLO MY FRIEND (тут вышла ошибочка, пишем :A, а не A: )

echo – команда, позволяющая показывать сообщения, в моем случае это “HELLO MY FRIEND

После давайте напишем команду, которая будет открывать окно, в данном случае это команда “Start”

Команда START – запуск приложения в новом окне

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

Формат командной строки:

START [“заголовок”] [/D путь] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED] [/LOW | /NORMAL | /HIGH | REALTIME| /ABOVENORMAL | /BELOWNORMAL] [/WAIT] [/B] [команда/программа] [параметры]

Параметры командной строки:

“заголовок” – заголовок окна. Обязательно в двойных кавычках.

путь – рабочий каталог.

B – запуск приложения без создания нового окна с отключением обработки сочетания клавиш CTRL+C. Если приложение не обрабатывает сочетание клавиш CTRL+C самостоятельно, единственным способом его прерывания является использование сочетания клавиш CTRL+Break.

I – Новой средой станет исходная среда, переданная cmd.exe, а не текущая среда.

MIN – Запуск команды/программы в свернутом окне.

MAX – Запуск команды/программы в развернутом окне.

SEPARATE – Запуск 16-разрядной программы Windows в отдельной области памяти.

SHARED – Запуск 16-разрядной программы Windows в общей области памяти.

LOW – Запуск приложения с приоритетом IDLE (самый низкий приоритет).

NORMAL – Запуск приложения с приоритетом NORMAL.

HIGH – Запуск приложения с приоритетом HIGH.

REALTIME – Запуск приложения с приоритетом REALTIME (самый высокий приоритет).

WAIT – Запуск приложения с ожиданием его завершения.

ABOVENORMAL – Запуск приложения с классом приоритета ABOVENORMAL (выше стандартного)

BELOWNORMAL – Запуск приложения с классом приоритета BELOWNORMAL (ниже стандартного)

команда/программа – Если это внутренняя команда cmd.exe или пакетный файл, обработчик команд (cmd.exe) запускается с ключом /K. Это означает, что окно не будет закрыто после завершения команды. Если это не внутренняя команда cmd.exe и не пакетный файл, значит, это программа, которая будет запущена в графическом или текстовом окне.

Но давайте напишем start http://google.com – при данное команде, будет открываться гугл.

После напишем echo I KILLED YOUR WINDOWS (Мини шуточка пхпх) – команда которая будет выводить текст. И на последок пишем goto A (для работы круга)

Вот как все это должно выглядеть

Нажимаем “Файл” “Сохранить как”  Рабочий стол

Тип файла выбираем “Все файлы” и к названии вашего файла(в моем случае пикабу) приписываем .bat

Все, теперь открываем и проверяем!

Теперь можем видеть такую картину:

в вк вы можете попросить меня скинуть вам немножко жоще батник xD

.com/sasukesama

Источник: https://pikabu.ru/story/uchenie_osnov_cmdbat_dlya_novichkov_5573579

Поделиться:
Нет комментариев

    Добавить комментарий

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.