【发布时间】:2011-02-07 09:13:40
【问题描述】:
这是一个 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输出静音,请检查this answer。
标签: vbscript batch-file stdout