【问题标题】:Java Runtime exec not executing batch script [duplicate]Java Runtime exec不执行批处理脚本[重复]
【发布时间】:2015-03-16 18:38:56
【问题描述】:

我有一个位于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));
}

当我运行它时,我没有遇到任何异常,但是 显然 没有正确执行批处理脚本(我可以告诉这一点,因为批处理脚本涉及的文件系统的其余部分没有得到应有的修改)。 我是否错误地调用了它?我需要对分叉进程做些什么吗?我该如何调试?

【问题讨论】:

    标签: java batch-file runtime.exec


    【解决方案1】:

    如下尝试

    Process process = Runtime.getRuntime().exec("cmd /c start C:\\app\\stuff\\dostuff.bat zombies");
    

    【讨论】:

    • 感谢@Rene Winkler (+1),但是这会导致在批处理文件完成执行后打开一个不需要的命令提示符并挂在那里。关于如何修复的任何想法(不能保持原样!)。
    • 在你的bat文件最后插入exit
    猜你喜欢
    • 1970-01-01
    • 2015-04-12
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多