5 операторів IF, які слід використовувати для ефективніших пакетних сценаріїв Windows
Якщо ви багато працюєте з пакетними файлами Windows, оператор IF пропонує дуже потужний спосіб додати гнучкості вашим сценаріям.
У цій статті ви дізнаєтеся про п’ять основних типів операторів IF, які можна використовувати в пакетному файлі Windows, як виглядає правильний синтаксис і реалістичний приклад для кожного.
Якщо ви готові розпочати створення сценаріїв, почнімо.
1 Порівняйте значення
Однією з основних речей, які вам зазвичай потрібно робити в пакетному сценарії, є порівняння двох значень і виконання різних дій залежно від порівняння.
Наприклад, скажімо, ви хочете написати пакетний сценарій, який щодня перевіряє розмір жорсткого диска вашого комп’ютера. Якщо він менший за 3 ГБ, ви хочете отримати звіт електронною поштою про те, що на жорсткому диску мало місця.
Щоб створити сценарій, який порівнює поточний вільний простір на жорсткому диску з вашим лімітом, вам потрібно створити наступний пакетний сценарій і зберегти його як файл .bat.
@echo offset DriveLimit=300000000for /f "usebackq delims== tokens=2" %%x in (`wmic logicaldisk where "DeviceID='C:'" get FreeSpace /format:value`) do set FreeSpace=%%xEcho 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 .
Тепер ви можете просто замінити рядок Echo Недостатньо вільного місця на команду, щоб надіслати сповіщення електронною поштою. Налаштуйте щоденний запуск сценарію.
2 Порівняння рядків
Ще одне цінне порівняння IF, яке можна виконати в пакетному завданні, — це порівняння рядків.
У наступному прикладі ви побачите, як перевірити версію Windows за допомогою пакетного завдання. Потім ви можете порівняти це з очікуваною версією Windows.
Деякі види використання цього сценарію можуть бути для ІТ-аудитів, коли вам потрібно швидко запустити сценарій і переконатися, що поточна операційна система найновіша або чи потребує її оновлення.
Ось як виглядає цей скрипт:
@echo offfor /f "tokens=4-5 delims=. " %%i in ('ver') do set VERSION=%%i.%%jif "%version%" == "6.0" echo Windows Vista.if "%version%" == "6.1" echo Windows 7if "%version%" == "6.2" echo Windows 8if "%version%" == "6.3" echo Windows 8.1if "%version%" == "10.0" echo Windows 10.
Ось як виглядає результат цього сценарію:
Можливість порівнювати рядки в пакеті відкриває цілий список можливостей. Якщо ви дослідите всю інформацію, яку можна отримати за допомогою команди WMIC, ви побачите, скільки статистичних даних про свій комп’ютер ви можете контролювати.
Більше того, ви навіть можете використовувати заплановані пакетні завдання, щоб отримувати сповіщення про них.
3 Перевірте, чи існує файл
Іншою корисною ситуацією, коли оператор IF у пакетному файлі є перевірка існування файлу даних.
У багатьох випадках пакетне завдання є лише інструментом моніторингу, який можна запланувати для перевірки нових вхідних файлів даних у певному каталозі. Потім ви можете скопіювати цей файл в інше місце або запустити якийсь сценарій Windows, який обробляє файл у вихідні дані Excel.
Використовувати пакетний файл, щоб перевірити, чи існує файл у каталозі, швидко та легко. Ось як цей сценарій виглядає:
@echo offif exist c:tempdatafile.txt (%WINDIR%SysWOW64cmd.exe cscript LoadToExcel.vbs) else (rem file doesn't exist)
Порівняння IF EXISTS корисне для багатьох речей.
Наприклад, якщо у вас запущена система або програма, яка створює нові журнали помилок у певній папці, коли виникає проблема, ви можете періодично запускати пакетне завдання. Таким чином ви можете легко контролювати, чи створюються нові журнали помилок, щоб ви могли надіслати сповіщення.
4 Перевірте, чи команда не виконана
Аспектом сценарію пакетного файлу, яким користується дуже мало ІТ-фахівців або програмістів, є перевірка на наявність помилок.
Існує багато пакетних завдань, які виконують важливі ІТ-завдання, як-от резервне копіювання важливих файлів або виконання операцій копіювання файлів. Коли ці пакетні завдання виходять з ладу, системи виходять з ладу, і люди зазвичай помічають це.
Набагато розумніше отримувати сповіщення, коли ваше пакетне завдання не виконує команду, перш ніж люди почнуть це помічати. Таким чином ви можете вирішити проблему завчасно.
Ви можете зробити це, використовуючи змінну %errorlevel%, яку повертає більшість програм і команд після їх запуску. Все, що вам потрібно зробити, це виконати свою команду за допомогою команди IF %ERRORLEVEL%.
@echo offxcopy C:omefolder E:backupfolderIF %ERRORLEVEL% NEQ 0 <blat command to send email>
Якщо програма або команда повертає нуль, все гаразд. Якщо ні, тоді вам потрібно надіслати собі електронний лист.
Однак вам не обов’язково використовувати маршрут електронної пошти. Ви завжди можете написати журнал помилок, який перевірятимете щоранку, або запустити другу програму чи команду, яка намагатиметься виконати копіювання за допомогою альтернативної команди.
Крім того, якщо ви віддаєте перевагу використанню оператора IF для перевірки певних кодів помилок, Windows пропонує досить розширений список кодів системних помилок.
5 Перевірте відсутність параметрів
Останній корисний оператор IF призначений не для конкретної команди, а для перевірки того, що сценарій отримав відповідні вхідні параметри.
Наприклад, скажімо, ви написали сценарій, який виконує команду xcopy із вхідної папки до загальної мережевої папки, яку використовує команда. Користувачеві потрібно просто вказати ім’я вашого сценарію з параметрами, що визначають шлях до його особистого файлу.
Ви не можете правильно виконати свій сценарій без указаного шляху, тому ви можете розмістити оператор IF на початку сценарію, щоб переконатися, що обидва параметри введено.
@echo offIF [%1]==[] (GOTO sub_message) ELSE (xcopy %1 E:backupfolder)GOTO eof:sub_messageecho You forgot to specify your path.:eof
Якщо ви ніколи раніше не використовували параметри з пакетними сценаріями, символ відсотка, за яким слідує число, представляє змінну параметра. %1 — перший параметр, %2 — другий і так далі.
Загалом оператори IF дуже зручні, і вам не потрібно писати занадто багато кодів, щоб фактично їх використовувати. Звісно, якщо ви хочете зробити крок вище, ви можете поглянути на VBA з нашим посібником зі створення вашої першої програми VBA.
Пакетні завдання можуть бути потужними
Багато людей почали використовувати пакетні завдання для простих завдань, які потрібно виконувати послідовно. На щастя, оператори IF дозволяють додати набагато більше логіки до ваших сценаріїв.
Крім того, ви часто можете використовувати більш просунуті мови програмування та використовувати PowerShell для виконання багатьох тих самих завдань, для яких ви зараз використовуєте пакетні завдання.
