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
我要的不是这种效果,不过
process = runtime.exec("cmd /c dir");把start去掉就可以了
但是只能在C盘,其他目录就好使了,我想要的最终效果是能够执行连贯的动作,就像在DOS窗口执行一样,可以实现吗
#3
那你获取路径,cd过去就行了。
#4
哈哈 我明白了,/c 并不是在c盘执行,不过我不明白为什么要写一个/c
#5
cmd /c 执行完命令后关闭命令窗口。
cmd /k 执行完命令后不关闭命令窗口
cmd /k 执行完命令后不关闭命令窗口
#6
cmd /c dir 是执行完dir命令后关闭命令窗口。 其实我觉得你要执行连贯的动作,建议你先写一个bat批处理文件,然后通过java代码执行该文件。如果是简单的一个命令,用runtime.exec("cmd /c dir")就行,多个命令最好用批处理
#1
process = runtime.exec("cmd /c start dir");
#2
我要的不是这种效果,不过
process = runtime.exec("cmd /c dir");把start去掉就可以了
但是只能在C盘,其他目录就好使了,我想要的最终效果是能够执行连贯的动作,就像在DOS窗口执行一样,可以实现吗
#3
那你获取路径,cd过去就行了。
#4
哈哈 我明白了,/c 并不是在c盘执行,不过我不明白为什么要写一个/c
#5
cmd /c 执行完命令后关闭命令窗口。
cmd /k 执行完命令后不关闭命令窗口
cmd /k 执行完命令后不关闭命令窗口
#6
cmd /c dir 是执行完dir命令后关闭命令窗口。 其实我觉得你要执行连贯的动作,建议你先写一个bat批处理文件,然后通过java代码执行该文件。如果是简单的一个命令,用runtime.exec("cmd /c dir")就行,多个命令最好用批处理