java调用cmd命令,求解

时间:2022-09-03 17:00:59
使用
process = runtime.exec("dir");
时报错,
java.io.IOException: Cannot run program "dir": CreateProcess error=2, ϵͳÕҲ»µ½ָ
at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
at java.lang.Runtime.exec(Runtime.java:593)
at java.lang.Runtime.exec(Runtime.java:431)
at java.lang.Runtime.exec(Runtime.java:328)
at com.bokesoft.myscm_cloud.testcase.os.command.WindowsCommand.exec(WindowsCommand.java:21)
at com.bokesoft.myscm_cloud.testcase.os.command.WindowsCommand.main(WindowsCommand.java:40)
Caused by: java.io.IOException: CreateProcess error=2, ϵͳÕҲ»µ½ָ
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(ProcessImpl.java:81)
at java.lang.ProcessImpl.start(ProcessImpl.java:30)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:453)
... 5 more

请问这是什么原因,该怎么解决

6 个解决方案

#1


process = runtime.exec("cmd /c start dir");

#2


引用 1 楼 fangmingshijie 的回复:
process = runtime.exec("cmd /c start dir");


我要的不是这种效果,不过
process = runtime.exec("cmd /c dir");
把start去掉就可以了
但是只能在C盘,其他目录就好使了,我想要的最终效果是能够执行连贯的动作,就像在DOS窗口执行一样,可以实现吗

#3


那你获取路径,cd过去就行了。

#4


引用 3 楼 fangmingshijie 的回复:
那你获取路径,cd过去就行了。


哈哈 我明白了,/c 并不是在c盘执行,不过我不明白为什么要写一个/c

#5


cmd /c 执行完命令后关闭命令窗口。 

cmd /k 执行完命令后不关闭命令窗口

#6


cmd /c dir 是执行完dir命令后关闭命令窗口。 其实我觉得你要执行连贯的动作,建议你先写一个bat批处理文件,然后通过java代码执行该文件。如果是简单的一个命令,用runtime.exec("cmd /c dir")就行,多个命令最好用批处理

#1


process = runtime.exec("cmd /c start dir");

#2


引用 1 楼 fangmingshijie 的回复:
process = runtime.exec("cmd /c start dir");


我要的不是这种效果,不过
process = runtime.exec("cmd /c dir");
把start去掉就可以了
但是只能在C盘,其他目录就好使了,我想要的最终效果是能够执行连贯的动作,就像在DOS窗口执行一样,可以实现吗

#3


那你获取路径,cd过去就行了。

#4


引用 3 楼 fangmingshijie 的回复:
那你获取路径,cd过去就行了。


哈哈 我明白了,/c 并不是在c盘执行,不过我不明白为什么要写一个/c

#5


cmd /c 执行完命令后关闭命令窗口。 

cmd /k 执行完命令后不关闭命令窗口

#6


cmd /c dir 是执行完dir命令后关闭命令窗口。 其实我觉得你要执行连贯的动作,建议你先写一个bat批处理文件,然后通过java代码执行该文件。如果是简单的一个命令,用runtime.exec("cmd /c dir")就行,多个命令最好用批处理