Вы можете запустить VBScript из пакетного файла, как это (параметр //NoLogo
предотвращает интерпретатору печатая версия/копирайта все время):
cscript //NoLogo C:\your.vbs 23
Используйте Arguments
свойство для получения аргумента (23
) в VBScript:
value = WScript.Arguments(0)
и передать значение обратно в пакетном сценарии с помощью возвращаемого значения:
WScript.Quit 42
Пример:
VBScript код:
value = WScript.Arguments(0)
WScript.Quit value + 19
Код партии:
@echo off
cscript //NoLogo C:\your.vbs %1
echo %errorlevel%
Выход:
C:\>batch.cmd 23
42
C:\>batch.cmd 4
23
Если вам нужно передать текст туда и обратно, передавая ответ обратно пакетного сценария становится все более сложным. Вам нужно что-то вроде этого:
for /f "tokens=*" %%r in ('cscript //NoLogo C:\your.vbs %1') do set "res=%%r"
Пример:
VBScript код:
str = WScript.Arguments(0)
WScript.StdOut.WriteLine str & " too"
Код партии:
@echo off
setlocal
for /f "tokens=*" %%r in ('cscript //NoLogo C:\your.vbs %1') do set "res=%%r"
echo %res%
Выход:
C:\>batch.cmd "foo"
foo too
C:\>batch.cmd "and some"
and some too
В более общем примечании: почему вы используете пакет/VBScript в первую очередь? PowerShell гораздо более универсален, чем оба из них объединены и доступны для любой версии Windows на любой половине.
Вы можете использовать аргументы командной строки при вызове пакетных файлов для передачи данных из VBS –
Пожалуйста, покажите часть VBS. Непонятно, пожалуйста, уточните, вам нужно перейти от партии к VBS или от VBS до партии? [Этот ответ] (https://stackoverflow.com/a/34321609/2165759) может быть полезен. – omegastripes