【微信Java開發 --1---番外1】在windows下,使用JAVA執行多條DOS命令+資料夾/路徑中有空格怎麼解決【目的是實現內容穿透外網】...

weixin_34088583發表於2016-10-26

內網穿透外網的那一篇,參正集1

但是每次都要Ctrl+R 啟動DOS視窗,也就是CMD,一句一句的去粘,略顯繁瑣。

所以將這些任務寫在JAVA程式中,啟動一次程式就可以實現【內網穿透】的功能,多好啊!

 

首先把流程走一遍

1.D盤存放內網穿透工具 ,那就在D盤新建一個資料夾,用於存放bat檔案的,起名字叫run cmd

2.在run cmd中新建一個文字檔案

 

在新建的文字檔案中貼上如下的程式碼:

echo 
d:
cd ngrok_windows
natapp -config ngrok.cfg -subdomain zjlm 80
natapp -authtoken=0931c612e83742ec
pause

 

已經走過內網穿透過程的 ,應該對  這段比較熟悉。

echo        DOS命令,表示cmd啟動的以下的dos命令都是顯示的狀態

d:            DOS命令,表示進入d盤

cd ngrok_windows   DOS命令,進入d:盤下的ngrok_windows資料夾

下面的兩行在【正篇1】中有解釋

pause      DOS命令,點選bat檔案就可以直接啟動cmd.exe,從而啟動DOS視窗,但是會閃一下就沒了,你可以試一下,加上pause之後可以起到暫停的作用

 

3.將這個a.txt文字檔案更改為a.bat檔案

 

4.新建java一個類,放入以下程式碼:

import java.io.IOException;


/**
 *  Java呼叫windows的DOS命令
 */
public class RunWindowsCommand{
    public static void main(String[] args) throws InterruptedException {
            try {
                String cmd = "cmd /c start "+"D:/run cmd/a.bat".replaceAll(" ", "\" \""); 
                Runtime.getRuntime().exec(cmd) ;
            } catch (IOException e) {
                e.printStackTrace();
            }
   
    }
}

 

其中,剛剛的資料夾名中帶有空格即: run  cmd資料夾

這在java中無法識別,必須將其進行

.replaceAll(" ", "\" \"");處理,才可以。


5.效果圖如下:

 

 再來看看原理如何
1.首先cmd.exe程式執行DOS命令就是呼叫一個一個的bat檔案
2.bat檔案中存放的就是DOS命令,可以是一條,也可以是多條
3.java程式要做的就是啟動cmd.exe,找到.bat檔案,執行它

 

相關文章