2013-11-25 3 views
0

У меня есть пакетный файл, на котором выполняется VBS-файл во время его выполнения. Файл VBS вводит некоторые переменные от пользователя и генерирует строковую переменную. Теперь я хочу, чтобы после завершения VBS-скрипта он должен вернуть эту строковую переменную в пакетный файл, который может использоваться в пакетном файле.Вернуть строку из VBS в пакетный файл

Я прочитал несколько руководств, но я не могу этого сделать. Как я могу это сделать?

ответ

3

Вы можете попробовать следующее:

@echo off 
setlocal EnableDelayedExpansion 

for /F "delims=" %%a in ('cscript.exe yourFile.vbs') do (
    rem Add processing of yous script here 
    ) 

SETLOCAL EnableDelayedExpansion dealys переменные расширения времени выполнения intill. Это позволяет использовать переменные для циклов. Значение переменной получается как! Var_name !, а не% var_name%.

для/F "delims =" %% а в ('cscript.exe yourFile.vbs') делать ( выполняет файл VBS и использует его putput в течение цикла. Cscript.exe интерпретатор VBS командной строки. Каждая строка «cscript.exe yourFile.vbs» будет храниться в переменной %%. Это имя переменного цикла.

Надеется, что это проясняет.

+1

Вы пропустили добавить, например: 'echo Значение, возвращаемое VBS: %% a' – Aacini

+0

Можете ли вы объяснить код? –

+0

Также как отправить переменную из файла VBS? –

1

Вот пример, который показывает вам, как это сделать .

Вы должны просто откликнуться на ответ от vbs и прочитать его, используя для.

call :Convertbytes 102523432123 MB free 
exit /b 

:ConvertBytes bytes unit ret 
setlocal 
if "%~2" EQU "KB" set val=/1024 
if "%~2" EQU "MB" set val=/1024/1024 
if "%~2" EQU "GB" set val=/1024/1024/1024 
if "%~2" EQU "TB" set val=/1024/1024/1024/1024 
> %temp%\tmp.vbs echo wsh.echo FormatNumber(eval(%~1%val%),0) 
for /f "delims=" %%a in ( 
    'cscript //nologo %temp%\tmp.vbs' 
) do endlocal & set %~3=%%a 
del %temp%\tmp.vbs 
exit /b 
Смежные вопросы