我回过头来处理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");}
答案 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