我有vbs腳本:參數傳遞到.vbs的
Set WshShell = CreateObject("WScript.Shell")
WshShell.RUN "cmd /c r:\iprem.bat" & " " & Wscript.Arguments(0), 0
所以我運行此腳本,並通過一些數據作爲參數。比我的bat文件處理這些數據。 我想把這個處理過的數據從蝙蝠傳遞迴vbs,當然強制vbs腳本等待這些數據,直到它獲得它才停止。
不知道如何做這兩項任務。
任何人都可以幫我請。
我有vbs腳本:參數傳遞到.vbs的
Set WshShell = CreateObject("WScript.Shell")
WshShell.RUN "cmd /c r:\iprem.bat" & " " & Wscript.Arguments(0), 0
所以我運行此腳本,並通過一些數據作爲參數。比我的bat文件處理這些數據。 我想把這個處理過的數據從蝙蝠傳遞迴vbs,當然強制vbs腳本等待這些數據,直到它獲得它才停止。
不知道如何做這兩項任務。
任何人都可以幫我請。
設置您的.bat文件,以便它首先有這樣一行:
cscript C:\YourScript.vbs
REM Do any other batch file processing here.
所以,而不是從您正在運行從蝙蝠的.vbs .VBS .BAT運行。
問題的答案取決於批處理文件對處理數據的處理。如果它將數據打印到標準輸出,則可以使用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
你想達到什麼目的?即整體大局/目標是什麼?也許你想在簡單的VBS中更容易:) – Jobbo
我的vbs腳本在從Windows註銷時運行。我的蝙蝠腳本正在使用ssh與我的代理服務器連接。不幸的是,Windows在ssh結束之前關閉了連接。這是因爲Windows完成vbs腳本 - 不等待蝙蝠。我想強迫它等待來自蝙蝠的某種確認。 – Kriss