从java执行.bat文件?

时间:2011-02-23 11:08:56

标签: java

我回过头来处理java程序中执行.bat文件的问题。

当我执行我的java代码时,我不明白为什么它在Eclipse的项目目录中查找我的.bat文件。

我清楚地宣布道路如下:"cmd.exe", "/C", "Start", "C:\\File\\batfile.bat" 如果有人能够清楚地解释我,请。 非常感谢你!

我使用win xp和Eclipse Helios。

这是我的代码:

String cmd;
        try {
            String[] command = { "cmd.exe", "/C", "Start", "C:\\File\\batfile.bat" };
                Runtime r = Runtime.getRuntime();
                Process p = r.exec(command);
                p.waitFor();

                } catch (Exception e) 
                {

                System.out.println("Execution error");} 

6 个答案:

答案 0 :(得分:1)

使用与父进程(eclipse.exe = java)相同的当前工作目录创建进程cmd.exe(从PATH环境变量中选取)。这很可能是c:\ eclipse或工作空间目录。

如果找不到文件(C:\ File \ batfile.bat),它会尝试当前工作的目录。如果使用Run As Java运行此代码,请尝试更改其中的工作目录。还要确保BAT文件确实存在。

答案 1 :(得分:1)

请改为尝试:

String com = System.getEnv("ComSpec") != null ? System.getEnv("ComSpec") : "C:\\Windows\\System32\\cmd.exe";

String[] command = { com, ...... }

ComSpec通常设置为cmd.exe的路径。如果没有,请使用完整的(预期路径)。您也可以在%SystemRoot%\ system32中查找它。甚至%path%。但是,仅仅检查ComSpec比使用cmd.exe更好,默认情况下没有别的。

正如其他人所指出的,从Eclipse运行时,您的默认工作目录通常是Eclipse项目文件夹。

一般来说,不要依赖工作文件夹是有用的。而是指定所需内容的路径,或搜索路径(如果应用程序不为您执行此操作)。

答案 2 :(得分:1)

从命令中删除Start - 这是不必要的 - 并尝试:

String[] command = { "cmd.exe", "/C", "C:\\File\\batfile.bat" };

答案 3 :(得分:0)

Runtime.getRuntime().exec("cmd /c start C:\\File\\batfile.bat");

答案 4 :(得分:0)

要确保执行特定文件,请提供完整路径,而不是仅提供可执行文件名(该文件名仅从启动JVM的上下文中运行-在某些IDE中可能是意外的):

try{
     Runtime.getRuntime().exec(".bat file complete path");
    } catch(IOException e) {
         System.out.println("exception");
    }

答案 5 :(得分:0)

我遇到了同样的情况,下面的内容帮助我通过Java成功执行了bat

String[] commands = {"C:\\Windows\\System32\\cmd.exe", "/c", "bat_script_location.bat"};
Process process = Runtime.getRuntime().exec(commands, null, "output_directory_path");
process.waitFor();
int statusBatchJob = process.exitValue(); // to check the status of execution