- 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 {
//运行cmd
public 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 block
e.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 block
e.printStackTrace();
}
}
}
在调用时先运行等操作结束后调用closeCmd();
想要看一下打开并关闭的效果的话需要把 /b去掉显示窗口。