四月 20

最近有個需求,就是固定時間內把某個資料夾內的檔案(不含子資料夾),壓縮成1個自解檔

而這個自解檔於執行時必需自動將檔案解壓到特定目錄,解壓完成後自動執行某個檔案

看起來似乎很複雜,不過事實上流程簡化後只有2個步驟

1.把檔案加入壓縮檔,並且引入解壓縮的參數
2.於 Windows 內的排程執行此指令

關於第2步驟 google 找一下就一堆教學了,在此不再贅述

第一步驟則是比較麻煩一點

首先,先建立一個檔案名為 config.txt 的文字檔,內容如下

Path=C:\Test_Dir
Title=測試自動解壓縮
Overwrite=1
Silent=2
Setup=setup.exe

這個檔為 WinRAR 要自動解壓縮時的參數檔

上面這些參數的意思代表

1.按下自解檔時,不詢問,自動執行解壓縮 (Silent=2)
2.要把檔案解壓縮到 C:\Test_Dir 這個目錄 (Path=C:\Test_Dir)
3.如果檔案存在就蓋過去 (Overwrite=1)
4.解壓縮完後自動執行 setup.exe (Setup=setup.exe)

接下來是使用指令模式來建立 WinRAR 的自解檔

先建立檔名為 run.bat 的批次檔,內容為

del "C:\out.exe"
path=%path%"C:\Program Files\WinRAR\";
winrar a -m2 -sfx -ibck -ep -zC:\config.txt "C:\out.exe" "C:\Target_Dir"

上面的意思表示

1.建立前先把舊的檔案刪除,如果沒刪除會一直累加進去壓縮檔 (del "C:\out.exe")
2.把 Winrar 的路徑加入 Path 以便使用 (path=%path%"C:\Program Files\WinRAR\";)
3.使用建立自動解壓縮檔的模式 (-sfx)
4.壓縮率設為一般 (-m2)
5.去掉檔案的完整路徑 (-ep)
6.於背景中壓縮檔案 (-ibck)
7.把解壓縮時的參數檔引入 (-zC:\config.txt)
8.壓縮檔完成時的存放位置 ("C:\out.exe")
9.要壓縮的檔案位置 ("C:\Target_Dir")

P.s 如果想要壓縮目標要包含子資料夾請加上一個參數 -r 就行了

接下來把 run.bat 放到 Windows 排程中執行就可以了

如果大家對參數檔有興趣,可以使用 WinRAR 的"參數產生器"來玩玩

先隨便找個檔案加入壓縮檔,接下來就看圖說故事

.

最後產生出來的參數會放在註解裡面