我想从javascript执行java程序并希望得到输出。
我尝试使用以下代码:
WshShell = new ActiveXObject("WScript.Shell");
var launch="cmd.exe /c java -classpath . HelloWorld ";
var cmdRun = WshShell.Run(launch,0,true);
通过Run方法,我无法获得该类的输出。
然后我尝试使用以下代码:
WshShell = new ActiveXObject("WScript.Shell");
var launch="cmd.exe /c p java classpath . HelloWorld ";
var cmdRun = WshShell.Exec(launch);
while (cmdRun.Status == 0) // wait for the command to finish
{
sleep(100);
}
var output = cmdRun.StdOut.ReadAll();
alert(output);
现在我可以在变量输出中获得输出。
我的问题是使用Run方法我可以隐藏命令提示(通过传递参数WshShell.Run(launch,0,true)) 通过使用Exec方法,我无法隐藏命令提示。我希望隐藏此命令提示。
在这方面你能帮我吗? 谢谢
答案 0 :(得分:9)
是的,这会困扰所有wsh脚本编写者。无法隐藏wshExec
对象,只有.Run
允许此选项,但在这种情况下不允许StdOut
。不久,唯一的方法是将输出重定向到文件。
WshShell = new ActiveXObject("WScript.Shell");
var launch ="cmd.exe /c java -classpath . HelloWorld > output.txt";
var cmdRun = WshShell.Run(launch,0,true);
答案 1 :(得分:0)
我知道这个线程已经很老了,但我刚刚遇到了同样的问题,并通过在关闭窗口的命令字符串中添加“exit”找到了解决方案。
来自 Microsoft Docs 的 cmd 页面:
您可以为 [string] 指定多个命令。用命令分隔符 && 将它们分开,并用引号将它们括起来。例如:
"[command1]&&[command2]&&[command3]"
因此,您传递给 WshShell.Exec 的完整命令字符串将如下所示:
cmd.exe /c "java -classpath . HelloWorld&&exit"