在 Windows 中,可执行文件可以是控制台应用程序或 Windows 应用程序(或 SFU 或本机应用程序,但这并不重要)。
内核检查可执行文件中的标志以确定哪个标志。
开始使用 CreateProcess
WinAPI 函数时,如果是控制台应用程序,如果父进程没有控制台窗口,内核会为其创建一个控制台窗口,并附加 STDIN
、STDOUT
和 STDERR
流到控制台。
如果是 Windows 应用程序,则不会创建控制台,默认情况下会关闭 STDIN
、STDOUT
和 STDERR
。
WSCRIPT.EXE
和 CSCRIPT.EXE
几乎完全相同,只是其中一个被标记为 Windows 应用程序,而另一个被标记为控制台应用程序(猜猜看哪条路!)。
所以答案是:如果您希望您的脚本有一个控制台窗口,请使用 CSCRIPT.EXE
。如果您希望它没有控制台窗口,请使用 WSCRIPT.EXE
。
这也会影响某些行为,例如 WScript.Echo 命令。在 CSCRIPT.EXE
中,这会将一行写入控制台窗口。在 WSCRIPT.EXE
中显示一个消息框。
对于您的应用,我建议CSCRIPT.EXE
。我认为你也应该看看 PuTTY 和 PLink,你也应该在这里看到这个:
使用 Windows 脚本宿主从 WshShell.Exec 捕获输出