从Java执行Windows命令
我尝试使用以下命令在给定目录中执行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());
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