java调用多条cmd命令_Java中调用多条cmd命令

使用Java执行cmd代码很简单:

try{

Runtime.getRuntime().exec("cd /d E:");

}catch (Exception e) {

e.printStackTrace();

}

但是如果在cmd下面执行这段代码,则会报出类似下面的异常:

java.io.IOException: Cannot run program "cd": CreateProcess error=2, The system

cannot find the file specified

at java.lang.ProcessBuilder.start(Unknown Source)

at java.lang.Runtime.exec(Unknown Source)

at java.lang.Runtime.exec(Unknown Source)

at java.lang.Runtime.exec(Unknown Source)

at Test.main(Test.java:4)

Caused by: java.io.IOException: CreateProcess error=2, The system cannot find th

e file specified

at java.lang.ProcessImpl.create(Native Method)

at java.lang.ProcessImpl.(Unknown Source)

at java.lang.ProcessImpl.start(Unknown Source)

... 5 more

之所以出现这个情况,当前的cmd进程正在执行java代码,但是cmd命令也在当前进行执行,某些命令比如上面的改变目录的执行会是程序执行发生异常,自然会抛出异常。

如果查看cmd命令会发现下面的几条命令:

cmd /c start dir

cmd /k start dir

上面的命令会打开一个新的cmd窗口然后执行dir命令。因此可以通过这个命令打开一个新的cmd然后执行我们需要执行的命令即可。

但是在实际使用的时候发现可以打开新的窗口,但是在后面放置多条命令的时候则不会执行(一条命令正常)。后来转念一想如果把命令存到一个bat文件中,然后执行bat命令就行,因此有了下面的代码:

try{

File file = new File("command.bat");

BufferedWriter writer = new BufferedWriter(new FileWriter(file));

writer.write(command1,0,command1.length());

writer.newLine();

writer.write(command2,0,command2.length());

writer.newLine();

.....

writer.close();

Runtime.getRuntime().exec("cmd /c start "+file.getAbsolutePath());

}catch(Exception e){

e.printStackTrace();

}

这样就能很好的解决java执行多条cmd命令的问题了。

你可能感兴趣的:(java调用多条cmd命令)