Інструкція Select Case
Для полегшення читання сценаріїв замість багаторазово вкладених інструкцій If...Then,..Else при перевірці одного виразу, що може мати кілька значень, краще використовувати інструкцію Select Case.
Допустимо, що відповідно до кожного дня тижня повинна бути виконана визначена команда. У наступному прикладі перемінної DayNumber привласнюється числове значення (від 1 до 7), що відповідає дню тижня від неділі до суботи.
DayNumber = Weekday(Date ())
select case DayNumber
case 2: MsgBox "Понедєльник. Сьогодні по телевізору футбол!"
case 3: MsgBox "Вівторок. Уроки музики!"
case 4: MsgBox "Середа. Сьогодні йдемо в кіно!"
case 5: MsgBox "Четвер. Усі на риболовлю!"
case 6: MsgBox "П'ятниця. Йдемо на вечірку!"
case else: MsgBox "Довгоочікуваний вихідний!"
end Select
Цикл Do...While
Цей цикл дозволяє виконувати набір інструкцій необмежену кількість разів, доти поки не буде виконана умова, необхідна для виходу з такого циклу. У наступному прикладі кожні 5с (5000 мс) перевіряється, чи не вилучений файл із: \temp\data.in. Як тільки це відбудеться, з'явиться діалогове вікно з відповідним повідомленням.
set fso = CreateObject("Scripting.FileSystemObject")
do while fso.FileExists("c:\temp\data.in")
WScript.Sleep 5000
loop
MsgBox "Файл c:\temp\data.in вилучений"
Цикл Do...While може бути написаний у декількох варіантах:
-
do while вираз
інструкції
loop
do until вираз
інструкції
loop
do
інструкції
while вираз
loop
do
інструкції
until вираз
loop
Вихід з циклу: інструкція Exit Do
У деяких випадках з'являється необхідність негайно перервати виконання циклу і передати керування сценарієм наступному за тілом циклу оператору. Для цих цілей використовують інструкцію Exit Do.
Припустимо, необхідно обробити кілька файлів з даними FILE1.DAT, FILE2.DAT і т.д. Якщо якого-небудь з цих файлів немає на жорсткому диску, процес обробки необхідно припинити. Нижче приведений приклад сценарію для рішення такої задачі.
set fso = CreateObject("Scripting.FileSystemObject")
num = 1
do while num <= 5
' обробка файлів від 1 до 5
filename = "с:\temp\file"+ltrim(Cstr(num))+".dat"
' формування імені файлу
if not fso.FileExists(filename) then
' перевірка наявності файлу
exit do
' якщо файлу не існує, цикл припиняється
end if
Process filename
' виклик процедури process
num = num + 1
' перейти до обробки наступного файлу
loop
end sub
На першому кроці циклу перемінної filename привласнюється значення FILE1.DAT, а значення перемінної num збільшується на 1. У такий спосіб перевіряється, чи дійсно існують файли, імена яких по черзі зберігаються в перемінної filename. Якщо файлу з зазначеним ім'ям не існує, інструкція Exit Do припиняє виконання циклу до виклику процедури Process.
Цикл For...Next
Цей цикл переважно використовувати у випадках, коли необхідно виконати набір інструкції визначене число раз. Нижче приведений приклад, що раніше зустрічався, переписаний для циклу For...Next.
Інструкція Exit For негайно перериває роботу циклу і передає керування сценарієм оператору, що знаходиться після рядка з оператором Next. Використовуючи ключове слово step, можна змінити значення лічильника на встановлену величину:
