关于java:Runtime.getRuntime().exec()和双击执行批处理文件有什么区别?

What is the difference between Runtime.getRuntime().exec() and double click to execute batch file?

runtime.getruntime().exec()和双击执行批处理文件有什么区别?

当我使用runtime.getruntime().exec()(案例1)这样执行批处理文件时,

1
2
String[] command = {"cmd.exe","/C","Start","D:\\test.bat"};
Process p =  Runtime.getRuntime().exec(command);

1
Process p = Runtime.getRuntime().exec("cmd /c start"+"D:\\test.bat")

一个新的命令控制台窗口打开,并启动test.bat。

如果我试图通过鼠标双击桌面来执行test.bat(案例2),它也在新的命令控制台窗口中打开,并启动应用程序。

但当我试图停止test.bat时出现了问题。我使用"ctrl-c"停止批处理文件,

当我在案例1中使用"ctrl-c"时,命令控制台停止,但仍保留窗口和提示行。

但是当我在案例2中使用"ctrl-c"时,命令控制台停止并关闭窗口!!

我要关上窗户以防万一。但我不知道怎么……我该怎么做??

我试着在test.bat中写"exit",但它不起作用。


在Java中,它不是EDCOX1的0个问题,如果打开CMD控制台并键入命令,则会遇到同样的问题。这是因为start不退出(而带有标志c的cmd在命令完成时退出)。

在test.bat的末尾添加exit是不起作用的,因为您通过ctrl+c杀死了脚本的执行,而exit语句没有执行。

您可以尝试按以下方式更改您的呼叫以解决问题:

1
cmd /C start cmd /C test.bat