2014-02-24 104 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