gpt4 book ai didi

从 main 方法调用批处理文件时,批处理文件中的 java 命令未执行

转载 作者:行者123 更新时间:2023-11-30 11:06:56 25 4
gpt4 key购买 nike

我通过以下方式从 main 方法调用批处理文件:

public static void main(String args[]){
Runtime rt=Runtime.getRuntime();
try {
Process pr=rt.exec("D:\\test1.bat");
pr.waitFor();
} catch (Exception e) {
e.printStackTrace();
}
}

批处理文件内容如下:

xcopy d:\a1 d:\a2
call C:\Java\jdk1.6.0_27\bin\java.exe -version >log1.txt 2>&1

执行后,文件夹 a1 中的文件将被复制到文件夹 a2,但不会生成 log1.txt。但是,如果我双击这个批处理文件,文件就会被复制,并且 log1.txt 会使用 java 版本生成。

最佳答案

  • 很可能会在 Java 应用程序的当前工作目录中生成 log1.txt,该目录不必与 .bat 文件位于同一目录中。
  • 您提到您使用的是 Eclipse,这会将工作目录默认设置为包含应用程序入口点 (static void main) 的项目目录的顶层,除非您已对其进行更改。
  • 当进行外部更改时,eclipse 不会自动刷新文件系统 - 尝试选择项目,然后选择 File => Refresh (F5)

  • 有一个 Runtime.exec() 的重载版本,可让您将工作目录设置为第三个参数。

例子

public static void main(String args[]) {
Runtime rt = Runtime.getRuntime();
try {
Process pr = rt.exec("D:\\test1.bat", null, new File("D:\\"));
pr.waitFor();
} catch (Exception e) {
e.printStackTrace();
}
}

关于从 main 方法调用批处理文件时,批处理文件中的 java 命令未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29092596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com