最近有個需求,就是固定時間內把某個資料夾內的檔案(不含子資料夾),壓縮成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 的"參數產生器"來玩玩
先隨便找個檔案加入壓縮檔,接下來就看圖說故事
.
最後產生出來的參數會放在註解裡面






