2014年7月7日 星期一

Java呼叫CMD的另一種方式使用ProcessBuilder(calling Splunk Restful API)

前幾天的文章已經可以順利的使用Java呼叫CMD
現在介紹另一種方式是使用ProcessBuilder呼叫,搭配前一篇Java處理字串中含有雙引號的字串
可以完整的呈現不使用批次檔,不用下 cd command to executing directory(可直接設定cmd執行目錄)

程式碼如下

import java.io.*;
import java.util.*;

public class ProcessBuilderTest {
  public static void main(String args[]) 
     throws InterruptedException,IOException 
  {
 final List<String> commands = new ArrayList<String>();                

 commands.add("cmd.exe");
 commands.add("/C");
 commands.add("curl -k -u admin:!QAZxsw2 -s https://localhost:8089/services/search/jobs/ -d\"search=| savedsearch selectFromDual\"");
 //在Java中若是字串中含有字串例如 " "name" " 應表示為 "\"name\" "
 //commands.add("curl -k -u admin:!QAZxsw2 -s https://localhost:8089/services/search/jobs/"+sid+"/results/");
 commands.add("start");

    //ProcessBuilder builder = new ProcessBuilder("cmd.exe", "/C", "start");
ProcessBuilder builder = new ProcessBuilder(commands);
File dir = new File("C:\\Users\\Peter\\Desktop\\openssl-0.9.8h-1-bin\\bin");
builder.directory(dir);

    final Process process = builder.start();
    
    InputStream is = process.getInputStream();
    InputStreamReader isr = new InputStreamReader(is);
    BufferedReader br = new BufferedReader(isr);
    String line;
    while ((line = br.readLine()) != null) {
      System.out.println(line);
    }
    System.out.println("Program terminated!");
  }
}

沒有留言:

張貼留言