Если вы много работаете с пакетными файлами Windows, ЕСЛИ заявление предлагает очень мощный способ добавить гибкость в ваши сценарии.
В этой статье вы познакомитесь с пятью основными типами операторов IF, которые вы можете использовать в пакетном файле Windows, как выглядит правильный синтаксис и реалистичным примером для каждого из них.
Если вы готовы начать писать сценарии, давайте начнем!
1. Сравните значения
Одна из основных вещей, которые вы обычно должны делать в пакетном скрипте, это сравнить два значения и следовать другому курсу действий в зависимости от сравнения.
Например, допустим, вы хотите написать пакетный скрипт, который ежедневно проверяет размер жесткого диска вашего компьютера. Если его размер меньше 3 ГБ, вы хотите получить отчет по электронной почте с надписью «Слишком мало места на жестком диске».
Чтобы создать сценарий, который сравнивает текущее свободное место на жестком диске с вашим лимитом, вы должны создать следующий пакетный сценарий и сохранить его как файл .bat.
@echo off
set DriveLimit=300000000
for /f "usebackq delims== tokens=2" %%x in (`wmic logicaldisk where "DeviceID='C:'" get FreeSpace /format:value`) do set FreeSpace=%%x
Echo FreeSpace="%FreeSpace%"
Echo Limit="%DriveLimit%"
If %FreeSpace% GTR %DriveLimit% (
Echo There is enough free space.
) else (
Echo Not enough free space.
)
WMIC — это компонент Windows Management Instrumentation, который поставляется с набором команд, которые вы можете использовать для получения информации о ПК. Вот как команда «wmic» в этом сценарии вызывает пространство «логического диска» и помещает его в переменную FreeSpace. Теперь вы можете просто заменить строку «Эхо недостаточно места» на пустую команду электронной почты, чтобы отправить вам предупреждение.
Наконец, настройте этот сценарий как пакетное задание Windows, запускаемое ежедневно.
Если вы никогда ранее не использовали blat, у нас есть статья, в которой показано, как настроить blat. Не знакомы с настройкой запланированных заданий? Мы ознакомили вас со статьей о том, как настроить запланированные задачи Windows
,
2. Сравнение строк
Еще одно ценное сравнение IF, которое вы можете сделать в пакетной работе, это сравнивая строки.
В следующем примере вы увидите, как проверить версию Windows с помощью пакетного задания. Затем вы можете сравнить это с ожидаемой версией Windows.
Некоторые варианты использования этого сценария могут использоваться для аудита ИТ, когда вам нужно быстро запустить сценарий и убедиться, что текущая операционная система является самой последней, или требуется ли ее обновление.
Вот как выглядит этот скрипт.
@echo off
for /f "tokens=4-5 delims=. " %%i in ('ver') do set VERSION=%%i.%%j
if "%version%" == "6.0" echo Windows Vista.
if "%version%" == "6.1" echo Windows 7
if "%version%" == "6.2" echo Windows 8
if "%version%" == "6.3" echo Windows 8.1
if "%version%" == "10.0" echo Windows 10.
Вот как выглядит вывод этого скрипта.
Возможность сравнения строк в пакетном режиме открывает целый список возможностей. Если вы изучите всю информацию, которую можете получить с помощью команды WMIC, вы увидите, сколько статистических данных о вашем компьютере вы можете отслеживать. Вы можете использовать запланированные пакетные задания для оповещения об этом.
3. Проверьте, существует ли файл
Еще одна полезная ситуация, когда оператор IF в пакетном файле проверить наличие файла данных.
Часто пакетное задание является просто инструментом мониторинга, который может быть запланирован для проверки новых файлов входящих данных в определенном каталоге.
Затем пакетное задание может либо скопировать этот файл в другое место, где его можно обработать, либо запустить какой-либо сценарий Windows, который обрабатывает файл, в выходной файл Excel.
(Ранее мы писали о том, как использовать сценарии Windows для обработки данных в файл Excel
; немного хорошего справочного чтения.)
Используя пакетный файл, проверить, существует ли файл в каталоге, быстро и легко. Вот как выглядит этот скрипт.
@echo off
if exist c:\temp\datafile.txt (
%WINDIR%\SysWOW64\cmd.exe
cscript LoadToExcel.vbs
) else (
rem file doesn't exist
)
Сравнение IF EXISTS полезно для многих вещей.
Например, если у вас работает система или приложение, которое создает новые журналы ошибок в определенной папке при возникновении проблемы, вы можете запускать пакетное задание время от времени, чтобы отслеживать, создаются ли новые журналы ошибок, чтобы вы могли отправить предупреждение.
4. Проверьте, не выполнила ли команда
Аспект пакетного файла сценариев, который используют слишком мало ИТ-специалистов или программистов проверка на ошибки.
Существует множество пакетных заданий, выполняющих важные ИТ-задачи, такие как резервное копирование важных файлов или выполнение операций копирования файлов. Когда эти пакетные задания терпят неудачу, системы отказывают, и люди замечают.
Гораздо умнее получать оповещения, когда ваше пакетное задание не выполнит команду до люди начинают замечать Таким образом, вы можете решить проблему заблаговременно.
Вы можете сделать это, используя переменную% errorlevel%, которую большинство приложений и команд возвращают после запуска.
Все, что вам нужно сделать, это следовать вашей команде командой IF% ERRORLEVEL%. Если приложение или команда вернули ноль, все в порядке. Если нет, то вам нужно отправить себе электронное письмо.
@echo off
xcopy C:\somefolder E:\backupfolder
IF %ERRORLEVEL% NEQ 0
Вам не нужно ехать по электронной почте. Вы всегда можете написать журнал ошибок, который вы можете проверять каждое утро, или запустить второе приложение или команду, которая пытается сделать копию, используя альтернативную команду. Независимо от того, какое действие вы хотите предпринять, IF% ERRORLEVEL% позволяет вам это сделать.
Если вы предпочитаете использовать оператор IF для проверки конкретных кодов ошибок, Windows предлагает довольно обширный список кодов ошибок.
5. Проверьте отсутствие параметров
Последний полезный оператор IF — это не конкретная команда, а проверка того, что сценарий получил соответствующие входные параметры.
Например, допустим, вы написали сценарий, который выполняет команду xcopy из входной папки, в общую сетевую папку, используемую командой. Пользователь просто должен следовать имени вашего скрипта с параметрами, определяющими его личный путь к файлу.
Очевидно, что вы не можете правильно выполнить свой сценарий без указания пути, поэтому вы можете поместить оператор IF в начало вашего сценария, чтобы убедиться, что оба параметра были введены.
Вот как это выглядит.
@echo off
IF [%1]==[] (
GOTO sub_message
) ELSE (
xcopy %1 E:\backupfolder
)
GOTO eof
:sub_message
echo You forgot to specify your path.
:eof
Если вы никогда ранее не использовали параметры в пакетных скриптах, символ процента, за которым следует число, представляет переменную параметра. % 1 — первый параметр,% 2 — второй, и так далее.
Пакетные работы могут быть мощными
Многие люди начинают использовать пакетные задания для простых задач, которые должны выполняться последовательно. С помощью операторов IF можно добавить намного больше интеллекта в ваши сценарии.
Конечно, если вы действительно хотите подняться на ступеньку выше, вы можете рассмотреть VBA с нашим руководством по созданию вашего первого приложения VBA или, возможно, даже изучить программирование на Python.
Вы можете часто использовать более продвинутые языки программирования, подобные этим, или научиться использовать PowerShell
, для выполнения многих тех же задач, для которых вы сейчас используете пакетные задания.