cmd.exe /c cmd 是执行完cmd命令后关闭命令窗口;cmd.exe /k cmd 是执行完cmd命令后不关闭命令窗口;cmd.exe /c start cmd 会打开一个新窗口后执行cmd指令,原窗口会关闭;cmd.exe /k start cmd 会打开一个新窗口后执行cmd指令,原窗口不会关闭;cmd.exe /k start /b cmd 会打开一个隐藏的窗口执行cmd指令,原窗口不会关闭要做一个好的程序员呢就要为客户着想,用户在不知情的情况下打开了cmd,你要做的就是不知情的情况下再关了。不然多运行几次/k start就会出现一大堆窗口我们这里补充关闭命令:cmd.exe /C start wmic process where name=‘cmd.exe’ call terminate
代码示例:
public class CmdUtil {//运行cmdpublic static void runCmd(){//这里是cmd的路径,我这里把phantomjs放在了项目下面,所以采用相对路径String cmd = "phantom/phantomjs/bin/phantomjs.exe phantom/phantomjs/echartsconvert/echarts-convert.js -s -p 6666";Runtime run = Runtime.getRuntime();try {Process process = run.exec("cmd.exe /k start /b " + cmd);//调用cmd不打开窗口Thread.sleep(1000);//等待1000millis,让cmd命令执行完成} catch (IOException e) {e.printStackTrace();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}//关闭cmd窗口public static void closeCmd(){Runtime rt = Runtime.getRuntime();Process p = null; try {rt.exec("cmd.exe /C start wmic process where name='cmd.exe' call terminate");} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
在调用时先运行等操作结束后调用closeCmd();
想要看一下打开并关闭的效果的话需要把 /b去掉显示窗口。