参数从.bat传递到.vbs

时间:2014-02-24 13:22:04

标签: batch-file vbscript

我有vbs脚本:

Set WshShell = CreateObject("WScript.Shell")
WshShell.RUN "cmd /c r:\iprem.bat" & " " & Wscript.Arguments(0), 0

所以我运行这个脚本并传递一些数据作为参数。比我的bat文件处理这个数据。 我想将这个经过处理的数据从bat传递回vbs,当然还要强制vbs脚本等待那些数据并且在它获取之前不会停止。

不知道如何完成这两项任务。

任何人都可以帮助我。

2 个答案:

答案 0 :(得分:1)

您的问题的答案取决于批处理文件对处理数据的处理方式。如果它将数据打印到STDOUT,您可以使用Exec方法而不是Run,并在批处理文件完成后从StdOut读取输出。

Set sh = CreateObject("WScript.Shell")

Set iprem = sh.Exec("cmd /c r:\iprem.bat " & Wscript.Arguments(0))

Do While iprem.Status = 0
  WScript.Sleep 100
Loop

result = iprem.StdOut.ReadAll

这将简要显示一个CMD窗口,因为Exec方法不允许运行隐藏进程。如果您想避免这种情况,您必须坚持使用Run方法并将输出重定向到临时文件,例如像这样:

Set sh  = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")

outfile = sh.ExpandEnvironmentStrings("%Temp%\tempfile.txt")

sh.Run "cmd /c r:\iprem.bat " & Wscript.Arguments(0) & " >" & outfile, 0, True

result = fso.OpenTextFile(outfile).ReadAll

fso.DeleteFile outfile

答案 1 :(得分:0)

设置.bat文件,使其先行:

cscript C:\YourScript.vbs

REM Do any other batch file processing here.

因此,不是从.vbs运行.bat而是从.bat运行.vbs。