在java程序中连接两个DOS命令

时间:2014-12-08 16:31:19

标签: java cmd

我想在java程序中连接两个dos命令。首先,我想更改目录,然后列出其中的文件和文件夹。所以我写了像

 try
    {
      Process process = UI.this.rt.exec("cmd.exe /c cd C:\\Users & start dir");
      process.waitFor();
      InputStream in = process.getInputStream();
      while (in.read() != -1) {}
    }
    catch (Exception e)
    {
      System.out.println(e);
    }

但这不起作用。当我在桌面上执行此操作时,它不会更改目录并显示桌面中的文件和文件夹。你能帮我解决这个问题吗?我正在使用Windows 7机器。

谢谢

Isuru Liyanage

4 个答案:

答案 0 :(得分:1)

将命令写入磁盘上的批处理文件并执行批处理 如果您不想在磁盘上安装这样的批次,请按需创建并在使用后将其删除 或者只使用java内置功能列出文件。

EDIT
但是你的代码有效。我试过了。
它打开一个dos-box,在更改目录后列出目录。

答案 1 :(得分:1)

您可以使用ProcessBuilder设置稍后执行的Process的工作目录。

或者,按照建议的else-thread进行操作,并使用Java API列出目录中的文件,这是更安全的。

答案 2 :(得分:1)

创建进程时,您可以传递一个字符串数组命令,如下所示:

String[] command = new String[3];
                command[0] = "cmd";
                command[1] = "/c";
                command[2] = " cd c:\\Users && dir";

                Process p = Runtime.getRuntime().exec(command);

答案 3 :(得分:0)

删除开始,它在新窗口中运行文件。另外,因为在NEW命令中没有cmd,DIR将不会被识别为命令。如果由于某种原因必须使用start,也可以将cmd / c添加到dir部分。

dir c:\users也是你真正需要做的。无需或无理由更改目录。