10

我正在尝试从我的 Java 可执行文件运行另一个目录中的批处理文件。我有以下代码:

    try {
        Process p =  Runtime.getRuntime().exec("cmd /c start \"C:\\Program Files\\salesforce.com\\Data Loader\\cliq_process\\upsert\\upsert.bat\"") ;           
    } catch (IOException ex) {
    }

结果是程序在运行程序的根目录中打开了一个 cmd 窗口,并且不访问我提供的文件路径。

4

5 回答 5

33

而不是Runtime.exec(String command),您需要使用exec(String command, String[] envp, File dir)方法签名:

Process p =  Runtime.getRuntime().exec("cmd /c upsert.bat", null, new File("C:\\Program Files\\salesforce.com\\Data Loader\\cliq_process\\upsert"));

但就个人而言,我会改用ProcessBuilder它,它比Runtime.exec().

ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "upsert.bat");
File dir = new File("C:/Program Files/salesforce.com/Data Loader/cliq_process/upsert");
pb.directory(dir);
Process p = pb.start();
于 2013-09-30T20:58:41.837 回答
6

尝试关注

try {
            String[] command = {"cmd.exe", "/C", "Start", "D:\\test.bat"};
            Process p =  Runtime.getRuntime().exec(command);           
        } catch (IOException ex) {
        }
于 2013-09-30T21:02:57.640 回答
2

您的代码很好,但问题出在批处理文件中。

您必须显示 bat 文件的内容,您的问题出在 bat 文件内的路径中。

于 2013-09-30T21:07:55.347 回答
2

以下对我有用

File dir = new File("E:\\test");
        ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/C", "Start","test.bat");
        pb.directory(dir);
        Process p = pb.start();
于 2017-12-27T05:02:59.093 回答
0
import java.lang.Runtime;

Process run = Runtime.getRuntime().exec("cmd.exe", "/c", "Start", "path of the bat file");

这将为您工作并且易于使用。

于 2016-02-08T17:55:13.740 回答