In Windows, an executable is either a console application or a Windows application (or a SFU or Native application, but that doesn't matter here).
The kernel checks a flag in the executable to determine which.
When starting using CreateProcess
WinAPI function, if it is a console application, the kernel will create a console window for it if the parent process doesn't have one, and attach the STDIN
, STDOUT
and STDERR
streams to the console.
If it is a Windows application, no console will be created and STDIN
, STDOUT
and STDERR
will be closed by default.
WSCRIPT.EXE
and CSCRIPT.EXE
are almost exactly identical, except that one is flagged as a windows application and the other is flagged as a console application (Guess which way around!).
So the answer is: If you want your script to have a console window, use CSCRIPT.EXE
. If you want it to NOT have a console window, use WSCRIPT.EXE
.
This also affects some behaviors, such as the WScript.Echo command. In a CSCRIPT.EXE
this writes a line to the console window. In WSCRIPT.EXE
it shows a messagebox.
For your application I suggest CSCRIPT.EXE
. I think you should also look at PuTTY and PLink, and you should also see this here:
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…