Java实现Bat脚本调用

420 阅读1分钟
package com.gsww.ctyxy.dicom.util;

import java.io.IOException;

/**
 * Bat脚本执行工具
 *
 * @author zhangyongliang
 * @create 2018-04-25 18:52
 **/
public class InvokeBat2 {
    public static   String runbat(String batPath, String... argStrings) {
        String cmd = "cmd /c start /b " + batPath + " " +"-jlsn ";
        if (argStrings != null && argStrings.length > 0) {
            for (String string : argStrings) {
                cmd += string + " ";
            }
        }
        return  cmd;
    }

    public static void main(String[] args) {
        String[] changeArgs=new String[]{"D:\\1.2.840.113564.44456477247028.7516.636269839232174797.446","D:\\test\\"};
        String cmd=runbat("C:\\Users\\Zhangyongliang\\Desktop\\dcm4che-5.13.0\\bin\\dcm2dcm.bat",changeArgs);
        Runtime  rt=Runtime.getRuntime();
        Process ps=null;
        try{
             ps=rt.exec( cmd);
             ps.waitFor();
        }catch (Exception e){
             e.printStackTrace();
        }
        int i = ps.exitValue();
        if (i == 0) {
            System.out.println("执行完成.");
        } else {
            System.out.println("执行失败.");
        }
        ps.destroy();
        ps=null;
        //批处理后,结束掉进程
        new InvokeBat2().killProcess();
    }
    //杀死bat调用进程
    private void killProcess() {
        Runtime rt = Runtime.getRuntime();
        Process p = null;
        try {
            rt.exec("cmd.exe /C start wmic process where name='cmd.exe' call terminate");
            System.out.println("程序结束运行");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}