2014-02-24 135 views
0

我有vbs脚本:参数传递到.vbs的

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

所以我运行此脚本,并通过一些数据作为参数。比我的bat文件处理这些数据。 我想把这个处理过的数据从蝙蝠传递回vbs,当然强制vbs脚本等待这些数据,直到它获得它才停止。

不知道如何做这两项任务。

任何人都可以帮我请。

+0

你想达到什么目的?即整体大局/目标是什么?也许你想在简单的VBS中更容易:) – Jobbo

+0

我的vbs脚本在从Windows注销时运行。我的蝙蝠脚本正在使用ssh与我的代理服务器连接。不幸的是,Windows在ssh结束之前关闭了连接。这是因为Windows完成vbs脚本 - 不等待蝙蝠。我想强迫它等待来自蝙蝠的某种确认。 – Kriss

回答

0

设置您的.bat文件,以便它首先有这样一行:

cscript C:\YourScript.vbs 

REM Do any other batch file processing here. 

所以,而不是从您正在运行从蝙蝠的.vbs .VBS .BAT运行。

1

问题的答案取决于批处理文件对处理数据的处理。如果它将数据打印到标准输出,则可以使用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