我前幾天發表了一篇文章“C/C++中一次性執行多個DOS指令”,那篇文章裡介紹了如何在一個EXE程式中執行多個DOS指令。
以那篇文章中的技術為核心,對其擴充就寫出了自動将BAT轉換為EXE的程式,實作的思路很簡單:
- 将原來代碼中直接指派到字元串變量中的BAT腳本,改為讀取BAT檔案,并将其輸出到一個頭檔案裡;
- 原來代碼的其餘部分保持不變,隻是通過include将轉換後的頭檔案包含進來,此時如果要求不高的話,其實就已經是可以使用了;
- 但是一個EXE檔案一般都有自己的圖示、版本号、廠商、版權等資訊,于是又參考DevCpp的makefile做了一些處理,使得生成的EXE可以有這些資訊,為了便于以後做圖形界面,這些資訊都用INI檔案儲存,這樣以後圖形界面上隻要把配置參數存到INI檔案裡,再執行轉換指令就可以了;
總之,絕大部分都是些瑣碎的工作,隻要耐心點,沒啥技術難度。
代碼在github: https://github.com/tywali/Bat2ExeConverter
下面對代碼結構進行一些簡單說明:
- prepare.cpp,初始化編譯用的中間目錄,根據INI檔案的配置生成資源檔案,拷貝圖示檔案到編譯目錄;
- compile.cpp,對編譯目錄中的代碼進行編譯,生成轉換後的EXE;
- main.cpp,程式入口;
使用方法:
- 編譯需要MinGW環境,可自行下載下傳配置,或者到DevCpp官網下載下傳包含MinGW的DevCpp,https://sourceforge.net/projects/orwelldevcpp/
- 下載下傳DevCpp後,可在安裝目錄中找到MinGW64(我的機器是64位的,是以是這個目錄,32位機器沒有驗證),将MinGW64\bin添加到系統的PATH參數下,否則編譯時會找不到編譯器;
- 将上面github中的的代碼clone下來,進入bin目錄,執行指令:
Bat2Exe example.bat