从Java执行Windows命令

从Java执行Windows命令,java,command-prompt,Java,Command Prompt,我尝试使用以下命令在给定目录中执行Windows命令 try{ String command = "cmd /c start cmd.exe"; Process child = Runtime.getRuntime().exec(command); OutputStream out = child.getOutputStream(); out.write("cd /d C:\\_private\\Files\\testfiles".getBytes());

我尝试使用以下命令在给定目录中执行Windows命令

try{
    String command = "cmd /c start cmd.exe";
    Process child = Runtime.getRuntime().exec(command);
    OutputStream out = child.getOutputStream();

    out.write("cd /d C:\\_private\\Files\\testfiles".getBytes());
    out.flush();
    out.write("for /f \"DELIMS=\" %x in ('dir /ad /b') do move \"%x*.*\" \"%x\\\"".getBytes());
    out.close();
}catch(IOException e){
}

它只是在Java项目所在的目录中打开一个命令提示符。

该进程已经终止。只有启动
cmd
才能启动另一个
cmd
。第一个
cmd
,您有一个变量,并且您正在写入它,它就消失了。只有第二个仍然开放

相反,只启动CMD一次,并告诉它保持打开状态:

String command = "cmd /k";
接下来,请看一下如何使用参数启动程序

Process process = new ProcessBuilder("cmd.exe", "/k").start();

这一进程已经终止。只有启动
cmd
才能启动另一个
cmd
。第一个
cmd
,您有一个变量,并且您正在写入它,它就消失了。只有第二个仍然开放

相反,只启动CMD一次,并告诉它保持打开状态:

String command = "cmd /k";
接下来,请看一下如何使用参数启动程序

Process process = new ProcessBuilder("cmd.exe", "/k").start();

关于正确创建和处理流程的许多好提示,请参阅。然后忽略它引用
exec
,并使用
ProcessBuilder
创建流程。还可以将
String arg
分解为
String[]args
,以说明包含空格字符的路径等问题。可能重复的,请参阅,以了解有关正确创建和处理进程的许多好提示。然后忽略它引用
exec
,并使用
ProcessBuilder
创建流程。还可以将
String arg
分解为
String[]args
,以说明包含空格字符的路径等问题。我也尝试了这种方法,但没有创建文件:
String[]cmd={“cmd.exe\”,“/k\”,“cd/d C:\\\ U private\\Files\\myfiles”,“copy num EMptyFile.txt”;Process=newprocessbuilder(cmd.start()@plaidshirt这不是正确的方式。只需启动
cmd/k
,然后通过
OutputStream out
执行其余操作(即
cd
copy
),我也尝试过这种方法,但没有创建文件:
String[]cmd={“\”cmd.exe\”,“/k\”,“cd/d C:\\\ u private\\Files\\myfiles”,“copy num EMptyFile.txt”;Process=newprocessbuilder(cmd.start()@plaidshirt这不是正确的方式。只需启动
cmd/k
,然后通过
OutputStream out