The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

介紹好用工具:Bat To Exe Converter

我時常在寫批次檔(Batch, *.bat)幫助我處理一些日常的工作,例如說備份資料庫、建立 SSH Tunnel、或是將所有子目錄下的 .svn 目錄改成 _svn 目錄、…等等。有些 Batch Script 甚至會寫超過一百行,若你想保護辛苦寫的批次檔時,就可以利用 Bat To Exe Converter 幫你轉成 *.exe 執行檔。

簡單的說,這套工具有 4 個特色:

  1. 隱藏原始碼。(這是無庸置疑的)
  2. 支援 “沒有互動視窗”的應用程式(Ghost applications),可讓你的程式在背景作業。
  3. 批次檔轉換後的執行檔可設定應用程式圖示、檔案版本、產品版本、公司名稱、程式描述、版權宣告等應用程式資訊。
  4. 可以不只將批次檔轉成執行檔,還可以將批次檔相關的檔案、文件或程式也一併結合在一起。

正所謂「一圖解千文」,如下圖示就是此工具唯一的 GUI 操作介面:

Bat To Exe Converter v1.4.1 執行畫面

 

下載後的壓縮檔中會有兩個檔案,一個是 Bat_To_Exe_Converter.exe 執行檔,另一個是 help.chm 說明檔,可查詢指令列(Command Line)操作的用法。

若要透過指令列的方式執行轉換動作,至少需要設定 4 個參數才能執行,其參數的說明如下:

  1. 第一個參數是來源批次檔
  2. 第二個參數是輸出的執行檔
  3. 第三個參數是 Icon 的檔案路徑
  4. 第四個參數是設定你的應用程式類型 ( Console 或 Ghost )
  5. 第五個之後的參數都是要外掛進來的檔案,也就是要跟這個原本的批次檔一起工作的程式。

範例1:將 a.bat 轉成 a.exe,其中的 "" 代表不要設定 Icon,1 代表轉換成 Console application

Bat_To_Exe_Converter.exe  a.bat  a.exe  ""  1

範例2:將 a.bat 轉成 a.exe,其中的 0 代表轉換成 Ghost application ( 背景作業模式 )

Bat_To_Exe_Converter.exe  a.bat  a.exe  ""  0

範例3:將 a.bat 轉成 a.exe,並且也將 myprogram1.exe 與 test.jpg 兩個檔案都打包放進 a.exe 中,讓 a.exe 在執行時可以引用這兩個檔案。

Bat_To_Exe_Converter.exe  a.bat  a.exe  ""  1  myprogram1.exe  test.jpg

另外,我也做了個小測試,情境如下:

  • 我寫一個 a.bat 內容是 type a.txt
  • 然後建立一個 a.txt 內容是 12345
  • 然後執行 Bat_To_Exe_Converter.exe a.bat a.exe "" 1 a.txt 將 a.txt 綁進 a.exe 中
  • 之後將 a.txt 的內容修改67890
  • 接者我執行 a.exe 得到的結果是 67890
  • 接者我從該目錄刪除 a.txt 檔案
  • 再執行一次 a.exe 我得到的結果是 12345

由此可知,即便將檔案一併綁進轉換後的執行檔中,原本批次檔讀取的訊息還是先從原本所在的目錄讀取檔案,若讀取不到才會讀取被綁進執行檔中的檔案。