java 調用 windows 的 cmd 命令

需要爬取的頁面,會在每次訪問時都在服務器端形成一個excel進程。。。撐不了多久。。服務器就被這些excel進程堵死了,頁面根本無法響應。。。。

找到頁面的開發商,說是windows的bug。。。沒有辦法關閉。。。

後來,從高手那裏得到了一條windows命令,可以用來在cmd中關閉excel進程:

taskkill  -f -im excel.exe

在網上搜一下,看看taskkill的參數,如何關閉遠程計算機上的指定進程:

taskkill /s ip /u username /p password -f -im excel.exe

 

但是高手說,windows的命令,只能以天爲單位來定時執行。。。這個週期對於我來講。。。太長啦。。。。。。。。

 

再網上搜了下,發現java竟然可以調用本機的命令來執行!

太強大啦~~~~~~~~~

String cmd = "cmd /c taskkill /s ip /u username /p password -f -im excel.exe";
Process process = Runtime.getRuntime().exec(cmd);

注意:

在字符串命令中,最前面一定加上:cmd,如果是windows98、2000,還要寫成:command.exe

字符串命令中的/c,表示執行完cmd窗口,將其關閉

這樣一來,用java寫個線程就OK啦~~~~~~~~~~

放在服務器上,讓他每分鐘都跑一次~哈哈哈哈哈~
沒想到,通過java解決了windows的bug~哈哈~

 

public void run() {
  while(true){
   try {
    this.execTest();
    sleep(1000*60l);
   } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    break;
   }
  }
 }

 

private void execTest() {
  try {
   String cmd = "cmd /c taskkill /s ip /u username /p password -f -im excel.exe";
   String words = ""; 
   Process process = Runtime.getRuntime().exec(cmd);
   boolean flag = false;
   BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
   while ( (words=bufferedReader.readLine()) != null){
    System.out.println(words); 
    flag = true;
   }
   if(flag){
    System.err.println("*************** 程序執行中。。。請勿關閉!謝謝 ***************");
   }
   try {
    process.waitFor();
   } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   
  } catch (IOException e) {
   System.out.println("執行失敗");
  }
 }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章