这是我到目前为止所拥有的。有用;将文件夹路径输出到文本文件。 我真正想要的是将数据输出到变量。我在网上看到的每个例子都展示了如何使用以下内容完成此操作:
set objScriptExec = wshShell.Exec (strCommand)
接着是
strresult = LCase(objScriptExec.StdOut.ReadAll. // code
我希望它与Run
一起运行,而不是Exec
,因为我希望隐藏命令提示符窗口,因为我将使用下面的代码执行许多命令。如何将输出捕获到变量?
Set wsShell = CreateObject("WScript.Shell")
strCommand = "cmd /c echo %temp% > %temp%\test.txt"
wsShell.Run strcommand,0,True
答案 0 :(得分:2)
这可以使用Windows Script Host Exec命令完成。可以访问StdOut,StdIn和StdErr,命令完成时ERRORLEVEL可用。
Dim strMessage, strScript, strStdErr, strStdOut
Dim oExec, oWshShell, intErrorLevel
Dim ComSpec
Set oWshShell = CreateObject("WScript.Shell")
ComSpec = oWshShell.ExpandEnvironmentStrings("%comspec%")
intErrorLevel = 0
strScript = ComSpec & " /C echo %temp%"
On Error Resume Next
Set oExec = oWshShell.Exec (strScript)
If (Err.Number <> 0) Then
strMessage = "Error: " & Err.Message
intErrorLevel = 1
Else
Do While oExec.Status = 0
Do While Not oExec.StdOut.AtEndOfStream
strStdOut = strStdOut & oExec.StdOut.ReadLine & vbCrLf
Loop
Do While Not oExec.StdErr.AtEndOfStream
strStdErr = strStdErr & oExec.StdErr.ReadLine & vbCrLf
Loop
WScript.Sleep 0
Loop
intErrorLevel = oExec.ExitCode
strMessage = strStdOut & strStdErr & CStr(intErrorLevel)
End If
WScript.Echo (strMessage)
注意:更换&#34; ReadLine&#34;以上&#34;阅读(1)&#34;完成同样的事情,但增加了处理字符而不是整行的能力。
答案 1 :(得分:1)
当然Wscript.Shell
会更容易,但是,由于您希望对会话进行更精细的控制,请考虑使用Win32_Process
。通常,使用它来控制新窗口的位置,但是,在您的情况下,您希望它隐藏,因此我设置startupInfo.ShowWindow = 0
,这意味着SW_HIDE
。下面声明了一个名为VBScript
的{{1}}函数,它将在一个不可见的窗口中运行一个命令,将输出保存到文本文件,然后将文本文件的内容返回给调用者。例如,我使用RunCmd
命令调用RunCmd
:
HOSTNAME
参考文献: