我的VBScript没有显示我执行的任何命令的结果.我知道命令被执行但我想捕获结果.
我已经测试了很多方法,例如:
Const WshFinished = 1
Const WshFailed = 2
strCommand = "ping.exe 127.0.0.1"
Set WshShell = CreateObject("WScript.Shell")
Set WshShellExec = WshShell.Exec(strCommand)
Select Case WshShellExec.Status
Case WshFinished
strOutput = WshShellExec.StdOut.ReadAll
Case WshFailed
strOutput = WshShellExec.StdErr.ReadAll
End Select
WScript.StdOut.Write strOutput 'write results to the command line
WScript.Echo strOutput 'write results to default output
Run Code Online (Sandbox Code Playgroud)
但它不打印任何结果.如何捕捉StdOut和StdErr?
Nat*_*ini 11
WScript.Shell.Exec()立即返回,即使它启动的进程没有.如果您尝试阅读Status或StdOut立即阅读,那里将不会有任何内容.
在MSDN文档建议使用下面的循环:
Do While oExec.Status = 0
WScript.Sleep 100
Loop
Run Code Online (Sandbox Code Playgroud)
Status每100毫秒检查一次,直到它发生变化.基本上,您必须等到该过程完成,然后您才能读取输出.
通过对代码进行一些小的更改,它可以正常工作:
Const WshRunning = 0
Const WshFinished = 1
Const WshFailed = 2
strCommand = "ping.exe 127.0.0.1"
Set WshShell = CreateObject("WScript.Shell")
Set WshShellExec = WshShell.Exec(strCommand)
Do While WshShellExec.Status = WshRunning
WScript.Sleep 100
Loop
Select Case WshShellExec.Status
Case WshFinished
strOutput = WshShellExec.StdOut.ReadAll()
Case WshFailed
strOutput = WshShellExec.StdErr.ReadAll()
End Select
WScript.StdOut.Write(strOutput) 'write results to the command line
WScript.Echo(strOutput) 'write results to default output
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13034 次 |
| 最近记录: |