Поиск по сайту:

5 операторов IF, которые можно использовать для более умных пакетных сценариев Windows


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

Если вы много работаете с пакетными файлами Windows, оператор IF предлагает очень мощный способ повысить гибкость ваших сценариев.

В этой статье вы узнаете о пяти основных типах операторов 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 (WMI), который содержит набор команд, которые можно использовать для получения информации с вашего компьютера.

Вот как команда «wmic» в этом скрипте вызывает пространство логического диска и помещает его в переменную FreeSpace.

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

2. Сравнение строк

Еще одно ценное сравнение ЕСЛИ, которое можно выполнить в пакетном задании, — это сравнение строк.

В следующем примере вы увидите, как проверить версию 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.

Использование пакетного файла для проверки наличия файла в каталоге выполняется быстро и легко. Вот как выглядит этот скрипт:

@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 <blat command to send email>

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

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

Более того, если вы предпочитаете использовать оператор 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.

Пакетные задания могут быть мощными

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

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

Статьи по данной тематике: