将字符串从VBS返回到批处理文件

时间:2013-11-25 15:38:56

标签: batch-file vbscript cmd

我有一个批处理文件,它在执行期间运行VBS文件。 VBS文件从用户输入一些变量并生成字符串变量。现在,我希望在VBS脚本完成之后它应该将该字符串变量返回到批处理文件,这可以在批处理文件中使用。

我阅读了几个教程但是,我无法做到这一点。我怎样才能做到这一点?

2 个答案:

答案 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