天天看點

自動将BAT檔案轉換為EXE

我前幾天發表了一篇文章“C/C++中一次性執行多個DOS指令”,那篇文章裡介紹了如何在一個EXE程式中執行多個DOS指令。

以那篇文章中的技術為核心,對其擴充就寫出了自動将BAT轉換為EXE的程式,實作的思路很簡單:

  1. 将原來代碼中直接指派到字元串變量中的BAT腳本,改為讀取BAT檔案,并将其輸出到一個頭檔案裡;
  2. 原來代碼的其餘部分保持不變,隻是通過include将轉換後的頭檔案包含進來,此時如果要求不高的話,其實就已經是可以使用了;
  3. 但是一個EXE檔案一般都有自己的圖示、版本号、廠商、版權等資訊,于是又參考DevCpp的makefile做了一些處理,使得生成的EXE可以有這些資訊,為了便于以後做圖形界面,這些資訊都用INI檔案儲存,這樣以後圖形界面上隻要把配置參數存到INI檔案裡,再執行轉換指令就可以了;

總之,絕大部分都是些瑣碎的工作,隻要耐心點,沒啥技術難度。

代碼在github: https://github.com/tywali/Bat2ExeConverter

下面對代碼結構進行一些簡單說明:

  1. prepare.cpp,初始化編譯用的中間目錄,根據INI檔案的配置生成資源檔案,拷貝圖示檔案到編譯目錄;
  2. compile.cpp,對編譯目錄中的代碼進行編譯,生成轉換後的EXE;
  3. main.cpp,程式入口;

使用方法:

  1. 編譯需要MinGW環境,可自行下載下傳配置,或者到DevCpp官網下載下傳包含MinGW的DevCpp,https://sourceforge.net/projects/orwelldevcpp/
  2. 下載下傳DevCpp後,可在安裝目錄中找到MinGW64(我的機器是64位的,是以是這個目錄,32位機器沒有驗證),将MinGW64\bin添加到系統的PATH參數下,否則編譯時會找不到編譯器;
  3. 将上面github中的的代碼clone下來,進入bin目錄,執行指令:
    Bat2Exe example.bat