我正在尝试从另一个文件调用vbs文件。被调用的文件执行。但是,该控件不会返回到原始vbs文件。当我在任务管理器中看到wscript进程时,此文件似乎正在运行。但我看不到输出-运行命令后的步骤。任何帮助/建议将不胜感激。
1。)vbs文件1(原始vbs文件test3.vbs)
Set objShell = WScript.CreateObject ("WScript.shell")
strErrorCode = objShell.run("cmd /K C:\temp\a\test2.vbs", 0, True)
msgbox "complete test3"
Set objShell = Nothing
2。)vbs文件2(称为vbs文件-test2.vbs)
msgbox "in test2"
WScript.Sleep 10000
msgbox "complete - test2"
3。)预期输出:
in test2
complete - test2
complete test3
4。)实际:
in test2
complete - test2
答案 0 :(得分:1)
objShell.run("cmd /K C:\temp\a\test2.vbs", 0, True)
永远不会因/K
开关而终止:
cmd /?
Starts a new instance of the Windows command interpreter CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF] [[/S] [/C | /K] string] /C Carries out the command specified by string and then terminates /K Carries out the command specified by string but remains
因此cmd
窗口保持打开状态,但是由于intWindowStyle
参数而被隐藏:0 = 隐藏该窗口并激活另一个窗口,假设Run
方法语法模式为.Run(strCommand, [intWindowStyle], [bWaitOnReturn])
使用
strErrorCode = objShell.run("cmd /C C:\temp\a\test2.vbs", 0, True)
或
strErrorCode = objShell.run("wscript.exe C:\temp\a\test2.vbs", 0, True)
甚至
strErrorCode = objShell.run("C:\temp\a\test2.vbs", 0, True)