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

当在Java中尝试执行多条CMD命令时,直接使用Runtime.getRuntime().exec()可能会遇到异常。这是因为某些命令,如改变目录(cd),在当前进程中执行会引发问题。为解决此问题,可以创建一个BAT批处理文件,将所有命令写入该文件,然后通过`cmd /c start`命令执行该文件。这样能确保多条命令在新的CMD窗口中正确执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用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命令的问题了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值