Урок 3 з CMD - робота зі змінними

Оголошення власних змінних є невід'ємною частиною практично будь-якої мови програмування, тож у мові vbscript вони оголошуються з допомогою ключового словаdim, а jscript – використовується ключове словоvar.

Windows

Змінні командного рядка Windows представляють трохи інший характер, тут не можна оголосити групу змінних cmd, або відразу привласнити значення кільком змінним в командному рядку. Давайте подивимося на такі рядки коду:

У цьому прикладі, за допомогою ключового слова cmdset ми поетапно оголосили три змінні (Var1, Var2 і Var3), як і в мові vbscript, cmd регістр символів не відіграє ролі, тому, дані рядки виведуть фразу " Привіт світ. "

Варто враховувати один момент, запис

це не одне і теж, тобто, у першому випадку ми створюємо cmd змінну "var1", а в другому - "var1". З присвоєнням значень аналогічна ситуація, тому звертайте увагу на пробіл.

Бачимо, щоб вивести значення змінної за допомогою функціїEcho, ми укладаємо її в символ "%", дляset – просто прописуємо її ім'я, так само варто враховувати, що всім змінним присвоюється рядковий тип.

Якщо ви запустите на виконання команду cmd set, яка виводить список усіх змінних та їх значень у поточному сеансі, то побачите, що там будуть присутні і щойно створені cmd змінні та змінні середовища. Ми зможемо звертатися до них протягом усього сеансу роботи.

Щоб очистити змінні в командному рядку Windows від їхнього вмісту, потрібно просто присвоїти порожнє значення:

Ми просто після імені прописали знак рівності та й усе. Варто пам'ятати, що якщо в таких мовах програмування як vbscript та jscript присвоєння порожнього значення змінної не впливає на неїіснування, то в командному рядку відбувається повне її видалення, тобто команда:

просто виведе рядок % Var3%, а команда

Виведе повідомлення "змінне середовище var3 не визначене "

Варто враховувати той момент, що якщо ми хочемо, щоб змінна командного рядка Windows містила спеціальні символи (наприклад, @&^), то їх потрібно екранувати. У мові jscript для виведення спеціальних символів використовуються esc-послідовності, у командному рядку спеціальний символ екранується за допомогою "^":

У цьому прикладі ми екранували символи & і ^, тим самим надавши фрази:

"100 3 = 5""100 ^3"

Варто звернути увагу, що якщо ми спробуємо вивести значення змінних даних за допомогою функції cmd set, то проблем не виникне, але якщо буде використовувати функцію echo, то отримаємо зовсім не той результат, що очікували. Так, при спробі виконати таку команду:

100"3" не є внутрішньою або зовнішньою командою, що виконується програмою або командним файлом.

Це відбувається через повторний аналіз спец-символів при використанні функції echo. Треба просто прописати символ "^" екранування не один раз, а тричі:

Тепер під час виконання коду:

все пройде успішно.

Як і в сценаріях сервера Windows Script Host, змінні в командному рядку Windows можуть містити задану область видимості.

Область видимості – блок коду, за межами якого не можна отримати доступ до змінних, оголошених у ньому. Досить ясно значення області видимості проявляється при роботі з функціями, з цього питання можете прочитати статтю "Урок 3 з JScript: Оголошення функцій користувача".

Зрозуміло, що змінні cmd, створені у поточному вікніКомандний рядок недоступний для інших процесів, але є можливість задати обмеження ще більші.

урок

Бачимо, що спочатку ми оголосили var1 і надали їй значення 0, далі ми знову оголосили змінну з аналогічним ім'ям, але вже в блоціSETLOCAL … ENDLOCAL. У сценарії відбувається висновок значення як локальної, і глобальної var1. Я спеціально використовував латинські знаки, щоб у вас у разі чого не виводилися крякозябри.

Дякую за увагу. Автор блогу Володимир Баталій