WSH скрипты. Полезное.
Обмен данными между WSH и BAT
Рассмотрим случай, когда данные передаются скрипту из bat файла и результат обработки получают обратно в bat / cmd файле. Возможно вы будете удивлены легкости решения этой задачи.
set qq=1q2w3e4r
cscript //nologo strlen.js %qq%
for /F "usebackq" %%i in (`cscript //nologo strlen.js "%qq%"`) do set /A myvar=%%i
echo length str %myvar%
Переменная qq содержит ваш пароль? Да, я подсматривал...
А вот и содержимое файла strlen.js:
//JScript
var Args = WScript.Arguments;
WScript.Echo(Args(0).length);
Приведенный выше скрипт возвращает длину строковой переменной, переданную ему как параметр.
То, что в скрипт могут быть переданы аргументы, мы уже рассматривали в синтаксисе cscript.
Для получения данных из скрипта используется прием, рассмотренный в разделе ПРИМЕРЫ проекта Справочник команд bat/cmd на странице Анализ результатов работы команды, программы.
Код JScript содержит извлечение аргумента, обращение к функции и вывод значения.
И еще один пример.
set qq=c:
for /F "usebackq tokens=1,2,3" %%i in (`cscript //nologo spacedrv.js %qq%`) do (
echo drive: %qq%
echo TotalSize: %%i
echo FreeSpace: %%j
echo FileSystem: %%k
)
И сам скрипт spacedrv.js:
var Args = WScript.Arguments;
if (Args.length == 0) drv="c:"; else drv=Args(0);
var fso = new ActiveXObject("Scripting.FileSystemObject");
var fdrv = fso.GetDrive(drv);
WScript.Echo(fdrv.TotalSize+ " "+fdrv.FreeSpace+" "+fdrv.FileSystem);
В результате выполнения этого скрипта вы узнаете общий объем диска, свободное пространство на нем и тип файловой системы.
Интерес в этом примере может представлять то, что JScript возвращает в bat / cmd файл сразу 3 значения.
Для вопросов, обсуждений, замечаний, предложений и т. п. можете использовать раздел форума этого сайта (требуетс¤ регистраци¤).