这是一个VBScript代码示例,演示如何捕获命令行程序发送到标准输出的所有内容。它执行命令xcopy /?
并在消息框中显示输出。在消息框出现之前,会短暂地看到控制台窗口弹出。
Set objShell = WScript.CreateObject("WScript.Shell")
Set objExec = objShell.Exec("xcopy /?")
Do
line = objExec.StdOut.ReadLine()
s = s & line & vbcrlf
Loop While Not objExec.Stdout.atEndOfStream
WScript.Echo s
这里有另一个 VBScript 代码示例,展示了如何在不显示控制台窗口的情况下执行脚本。
objShell.Run "c:\temp\mybatch.bat C:\WINDOWS\system32\cmd.exe", 0
或者objShell.Run "c:\temp\myscript.vbs C:\WINDOWS\system32\cscript.exe", 0
正如您所看到的,它的形式是<script><space><executor>
。
最后一个示例使用objShell.Run
而不是objShell.Exec
我不知道如何执行一个命令行程序(必要时从批处理文件中),捕获标准输出,而不显示控制台窗口。 有什么想法吗?
.Exec()
方法,无需控制台窗口闪烁、临时文件和意外的WScript.Echo
输出静音,查看此答案。 - omegastripes