Runtime.getRuntime().exec()和双击执行批处理文件有什么区别?
当我像这样使用Runtime.getRuntime().exec()(case 1)执行批处理文件时,
String[] command = {"cmd.exe", "/C", "Start", "D:\\test.bat"};
Process p = Runtime.getRuntime().exec(command);
要么
Process p = Runtime.getRuntime().exec("cmd /c start "+"D:\\test.bat")
打开一个新的cmd控制台窗口,并启动test.bat.
如果我尝试通过鼠标双击我的桌面来执行test.bat(案例2),
它还在新的cmd控制台窗口中打开,并启动应用程序.
但是当我试图停止test.bat时会出现问题.我使用’Ctrl-C’来停止批处理文件,
当我在案例1中使用’Ctrl-C’时,cmd控制台停止但仍然保持窗口和提示行.
但是当我在案例2中使用“Ctrl-C”时,cmd控制台会停止并关闭窗口!
我希望在案例1中关闭窗口.但我不知道怎么做…我怎么能这样做?
PS.我尝试在test.bat中写’exit’,但它不起作用.
最佳答案 对于java中的Runtime.exec(),这不是问题,如果打开cmd控制台并键入命令,则会遇到同样的问题.这是因为start没有退出(当命令完成时,带有标志C的cmd退出).
它不能通过在test.bat末尾添加exit来工作,因为你通过ctrl c执行了脚本,并且没有执行exit语句.
您可以尝试按以下方式更改呼叫以解决问题:
cmd /C start cmd /C test.bat