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)执行批处理文件时,
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 控制台 window 打开,并启动 test.bat。
如果我尝试通过鼠标双击我的桌面来执行 test.bat(情况 2),
它还会在新的 cmd 控制台 window 中打开并启动应用程序。
但是当我尝试停止时出现问题 test.bat。我使用 'Ctrl-C' 停止批处理文件,
当我在情况 1 中使用 'Ctrl-C' 时,cmd 控制台停止但仍然保留 window 和提示行。
但是当我在情况 2 中使用 'Ctrl-C' 时,cmd 控制台停止并关闭 window!!
我想在案例 1 中关闭 window。但我不知道怎么做..我该怎么做??
ps。我尝试在 test.bat 中写入 'exit',但它不起作用。
Runtime.exec()
在 java 中没有问题,如果您打开 cmd 控制台并键入命令,您会遇到同样的问题。这是因为 start
不退出(而带有标志 C 的 cmd
在命令完成时退出)。
在test.bat末尾加exit
是不行的,因为你ctrl+c杀死了脚本的执行,exit语句没有执行。
您可以尝试如下更改您的调用以解决问题:
cmd /C start cmd /C test.bat
Runtime.getRuntime().exec()和双击执行批处理文件有什么区别?
当我像这样使用 Runtime.getRuntime().exec()(案例 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 控制台 window 打开,并启动 test.bat。
如果我尝试通过鼠标双击我的桌面来执行 test.bat(情况 2), 它还会在新的 cmd 控制台 window 中打开并启动应用程序。
但是当我尝试停止时出现问题 test.bat。我使用 'Ctrl-C' 停止批处理文件,
当我在情况 1 中使用 'Ctrl-C' 时,cmd 控制台停止但仍然保留 window 和提示行。
但是当我在情况 2 中使用 'Ctrl-C' 时,cmd 控制台停止并关闭 window!!
我想在案例 1 中关闭 window。但我不知道怎么做..我该怎么做??
ps。我尝试在 test.bat 中写入 'exit',但它不起作用。
Runtime.exec()
在 java 中没有问题,如果您打开 cmd 控制台并键入命令,您会遇到同样的问题。这是因为 start
不退出(而带有标志 C 的 cmd
在命令完成时退出)。
在test.bat末尾加exit
是不行的,因为你ctrl+c杀死了脚本的执行,exit语句没有执行。
您可以尝试如下更改您的调用以解决问题:
cmd /C start cmd /C test.bat