Windows script host (wsh) приклади

WSH скрипти. Приклади.
Операції зі змінними оточення.

Змінні оточення (змінні середовища) містять дані про настройках операційної системи WINDOWS і про настройках користувачів. З виходом нових операційних систем список системних і локальних змінних оточення може змінюватися.
Незважаючи на те, що ця сторінка знаходиться в розділі Приклади, на початку буде теоретичне вступ.
Нижче наведено список змінних оточення.

Повертає розміщення профілю All Users. У Windows 7 повертає шлях до папки C: \ ProgramData \.

Повертає використовується за умовчанням розміщення даних додатків.
У Windows XP це C: \ Documents and Settings \% UserName% \ Application Data.
У Windows 7 - C: \ Users \% UserName% \ AppData \ Roaming.

Вказує шлях до поточного каталогу.

CLIENTNAME
Тип - локальна динамічна

Мінлива визначена тільки в середовищі віддаленого підключення до робочого столу. Зберігає ім'я комп'ютера (% COMPUTERNAME%) клієнта віддаленого доступу.

Точна команда, використана для запуску поточного cmd.exe.

Видаляє зазначену змінну оточення

Метод ExpandEnvironmentStrings об'єкта WshShell.
Повертає значення змінної середовища поточного командного вікна (Process), заданим рядком (ім'я змінної повинно бути оточене знаками "%", не відчутно до регістру).

На цьому короткий теоретичний вступ закінчимо і перейдемо до практичних питань.

Отримати значення зміною оточення поточного командного вікна.

var wshShell = WScript.CreateObject ( "WScript.Shell"); winDir = wshShell.ExpandEnvironmentStrings ( "% WinDir%"); WScript.Echo (winDir);

У наступних прикладах буде використано властивості Environment об'єкта WshShell так як воно дозволяє отримати доступ до всіх змінним оточення.

Вивести всі значення змінних оточення.

var wshEnviromentUser, wshEnum; var wshShell = WScript.CreateObject ( "WScript.Shell"); var strRez = ''; wshEnviromentUser = wshShell.Environment ( "USER"); wshEnum = new Enumerator (wshEnviromentUser); for (;! wshEnum.atEnd (); wshEnum.moveNext ()) strRez + = wshEnum.item () + "\ n"; WScript.Echo (strRez);

Якщо в попередньому прикладі замість USER поставити наприклад, SYSTEM, то будуть виведені всі системні змінні оточення і їх значення.

Додати змінну і її значення в список змінних оточення.

var wshEnviromentUser; var wshShell = WScript.CreateObject ( "WScript.Shell"); wshEnviromentUser = wshShell.Environment ( "USER"); wshEnviromentUser ( "my_super_var") = "NEW";

У списку призначених для користувача змінних оточення з'явиться змінна my_super_var зі значенням "NEW". Ви можете переконатися в цьому, запустивши приклад виведення всіх значень користувальницьких змінних оточення.

Видалити змінну зі списку змінних оточення.

var wshEnviromentUser; var wshShell = WScript.CreateObject ( "WScript.Shell"); wshEnviromentUser = wshShell.Environment ( "USER"); wshEnviromentUser.Remove ( "my_super_var");

Тут використовувався метод Remove (strName) для видалення змінної оточення.

Змінити змінну зі списку змінних оточення.

Для виконання цієї операції необхідно поступити таким самим чином, що і при створенні нової змінної оточення.

var wshEnviromentUser; var wshShell = WScript.CreateObject ( "WScript.Shell"); wshEnviromentUser = wshShell.Environment ( "USER"); wshEnviromentUser ( "my_super_var") = "OLD";

Що б переконатися в тому, що значення змінилося, можна запустити приклад виведення всіх значень користувальницьких змінних оточення.

Необхідно враховувати, що змінні поточного користувача, мають пріоритет над системними.

Якщо говорити про операціях зі змінними оточення поза зв'язком з WSH то варто було б згадати місце, де ці змінні живуть.

[HKEY_CURRENT_USER \ Environment] [HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment]

Для зміни змінних оточення відповідно можна використовувати команду Cmd Reg

REG ADD "HKEY_CURRENT_USER \ Environment" / v my_var / t REG_EXPAND_SZ / d "Best"

або, що набагато правильніше, команду SetX.

Для питань, обговорень, зауважень, пропозицій і т. П. Можете використовувати розділ форуму цього сайту (потрібна реєстрація).