我有一个位于C:\app\stuff\dostuff.bat
的批处理文件,它根据您提供的参数对文件系统执行操作。当我打开一个命令行,并像这样运行它时,它完全正常:
C:\app\stuff\dostuff.bat zombies
就像我说的,这个调用工作得很好(并正确处理zombies
arg)。但是,我现在正试图从Java应用程序中驱动dostuff.bat
的执行,如下所示:
try {
Process process = Runtime.getRuntime().exec("C:\\app\\stuff\\dostuff.bat zombies");
process.waitFor();
} catch (IOException|InterruptedException e) {
logger.error(ExceptionUtils.getFullStackTrace(e));
}
当我运行它时,我没有例外,但是显然没有正确执行批处理脚本(我可以告诉它,因为批处理脚本接触的其余文件系统不会得到修改它应该)。 我是否错误地调用了这个?我是否需要对分叉过程执行某些操作?我该怎么调试?
答案 0 :(得分:1)
尝试如下
Process process = Runtime.getRuntime().exec("cmd /c start C:\\app\\stuff\\dostuff.bat zombies");