当我直接在 DOS 中执行批处理文件时,一切都按预期运行。 但是当我从 Java runTime 执行批处理文件时,它将只运行调用 jar 文件的命令(即调用 JVM)。它不运行任何 native dos 命令。
一个问题是我没有控制台知道为什么会这样。我想知道这是否是权限问题,但我不知道。有人以前看过这个吗?
使用的 Java 代码如下所示:
Runtime.getRuntime().exec("c:\targetFolder\myBatch.bat"); // (Edited here for simplicity.)
批处理文件看起来像这样(注意我已经简化了它):
我的批处理.bat:
call java myJar.jar blah blah --- yes
copy outputFile.out outputFile.bak --- NO
mkdir testDir --- NO
call java myJar.jar blah blah --- yes
call someOther.bat --- NO
---yes 行运行良好,我看到了预期的结果
---no lines not 运行,但我不知道为什么不运行 b/c 没有控制台告诉我。
感谢您的帮助!! 迈克
最佳答案
您必须运行 Windows 命令处理器(shell),将批处理文件作为参数提供给它。
Runtime.getRuntime().exec( "cmd.exe /C c:\\targetFolder\\myBatch.bat" );
关于java - 从 Java 运行时执行批处理文件时, native DOS 命令无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1849254/