我有一个批处理文件,它在执行期间运行VBS文件。 VBS文件从用户输入一些变量并生成字符串变量。现在,我希望在VBS脚本完成之后它应该将该字符串变量返回到批处理文件,这可以在批处理文件中使用。
我阅读了几个教程但是,我无法做到这一点。我怎样才能做到这一点?
答案 0 :(得分: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执行时间。这允许在for循环中使用变量。获取变量值,如!var_name!,而不是%var_name%。
for / F“delims =”%% a in('cscript.exe yourFile.vbs')do( 执行你的vbs文件并在for循环中使用其putput。 cscript.exe是命令行vbs解释器。 'cscript.exe yourFile.vbs'的每一行都将存储在%%变量中。这是循环变量名。
希望这澄清。
答案 1 :(得分:1)
以下示例说明如何操作。
你只需要回应vbs的答案并使用for来阅读。
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