我试图从C:/abc/def/coolBat.bat运行一个蝙蝠但是我的java工作区在D:/中 我试过了:
String cmd = "cmd /c /start C:/abc/def/coolBat.bat";
Runtime.getRuntime().exec(cmd);
但是没有用,所以我尝试了这个
String[] command = { "cmd.exe", "/C", "C:/abc/def/coolBat.bat" };
Runtime.getRuntime().exec(cmd);
也没有用。也试过这个
Executor exec = new DefaultExecutor();
exec.setWorkingDirectory(new File("C:/abc/def"));
CommandLine cl = new CommandLine("coolBat.bat");
int exitvalue = exec.execute(cl);
说无法找到该文件。
也尝试过这样的事情:
Runtime.getRuntime().exec("cmd cd /d C:/abc/def/ && coolBat.bat");
没什么。奇怪的是这个命令:
cd /d C:/abc/def/ && coolBat.bat
当我在cmd中执行此操作时。值得一提的是,bat文件将一些文件复制到另一个目录,所有这些都在C:/
中编辑N°1
CD C:\abc\def\MN
copy almn + ctmn + bamn C:\abc\def\mn_sf.txt
CD C:\abc\def\ME
copy alme + ctme + bame C:\abc\def\me_sf.txt
CD C:\abc\def\
if exist MN.txt del MN.txt
if exist ME.txt del ME.txt
if exist JUZ.txt del JUZ.txt
if exist FUNC.txt del FUNC.txt
if exist AHO.txt del AHO.txt
CD C:\
答案 0 :(得分:0)
允许MS Windows使用关联的应用程序来运行批处理文件(或任何其他应用程序):
必需的进口:
import java.awt.Desktop;
以下是您可以尝试的代码:
String filePath = "C:/abc/def/coolBat.bat";
if (Desktop.isDesktopSupported()) {
try {
File myFile = new File(filePath);
Desktop.getDesktop().open(myFile);
}
catch (IOException | IllegalArgumentException ex) {
System.err.println("Either there is no application found "
+ "which is associatd with\nthe file you want to work with or the "
+ "file doesn't exist!\n\n" + filePath);
}
}
答案 1 :(得分:0)
Java版本可以用作:
String[] command = {"cmd.exe", "/C", "Start", "/D", "c:\\abc\\def", "c:\\abc\\def\\coolBat.bat"};
Process process = Runtime.getRuntime().exec(command);
BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream()));
while ((line = input.readLine()) != null) {
System.out.println(line);
}
input.close();
BufferedReader errReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
while ((line = errReader.readLine()) != null) {
System.out.println(line);
}
System.out.flush();
int retCode = process.waitFor();
System.out.println("Return code: " + retCode);
答案 2 :(得分:0)
好吧,我终于让它工作了,只需将工作区更改为C:/
显然问题是它无法从D:/更改为C:/来执行。我运行了之前尝试的相同命令,没有问题。
猜测问题仍然存在,为什么当从Java运行命令时,它无法从D:/更改为C:/。
感谢大家的帮助
答案 3 :(得分:0)
尝试一下:
String[] command = { "cmd.exe", "/C", "C: && C:/abc/def/coolBat.bat" };