我想在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
答案 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
也是你真正需要做的。无需或无理由更改目录。