使用java从不同磁盘运行bat文件

时间:2017-06-05 21:24:29

标签: java windows batch-file cmd

我试图从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:\

4 个答案:

答案 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" };