java代码获取进程是否存在、编写bat脚本判断进程,不存在则启动

java环境jdk的bin目录下copy文件javaw.exe为affectivew.exe

脚本如下:

@echo off
tasklist | find /i "affectivew.exe" && echo  [ %time:~,-3% ]存在进程affectivew.exe|| start %JAVA_HOME%\bin\affectivew.exe -jar C:\Users\Administrator\Desktop\testProess\nb-eureka.jar monitorMonkeyLog &
exit

 

public static void main(String[] args) throws InterruptedException {
         boolean status = getTaskStatus();
         System.out.println("进程运行状态:"+status);
     }
     
     public static boolean getTaskStatus(){
     /*
      * 下面先是获取进程列表
      */
     Runtime runtime = Runtime.getRuntime();
     List tasklist = new ArrayList();
     try {
         Process process = runtime.exec("tasklist");
         BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
         String s = "";
         while ((s = br.readLine()) != null) {
              if ("".equals(s)) {
                  continue;
              }
              tasklist.add(s+" ");
         }

         // 获取每列最长的长度
         String maxRow = tasklist.get(1) + "";
         String[] maxCol = maxRow.split(" ");
         // 定义映像名称数组
         String[] taskName = new String[tasklist.size()];
         for (int i = 0; i < tasklist.size(); i++) {
              String data = tasklist.get(i) + "";
              for (int j = 0; j < maxCol.length; j++) {
                  switch (j) {
                  case 0:
                      taskName[i]=data.substring(0, maxCol[j].length()+1).trim();
                      data=data.substring(maxCol[j].length()+1);
                      break;
                  }
              }
         }
         List taskNameList = Arrays.asList(taskName);
         boolean taskFlag = taskNameList.contains("affectivew.exe");
         return taskFlag;
     
     } catch (Exception e) {
         e.printStackTrace();
     }
    return false;
 }

你可能感兴趣的:(bat脚本)