這很容易實現,因爲控制檯版本Rar.exe
以及GUI版本WinRAR.exe
支持在命令行上指定的多個文件或目錄添加到相同的存檔文件中。
@echo off
for /D %%D in ("C:\directory_with_files_you_want_to_compress\*") do "%ProgramFiles(x86)%\WinRAR\Rar.exe" a -cfg- -ep -idq -m0 -x*.rar -v100m "C:\where_you_want_to_save_new_rar_files\%%~nxD.rar" "%%~fD\" "C:\directory_with_readme.txt\readme.txt" && rd /Q /S "%%~fD" || echo/ && pause
同上更易於閱讀:
@echo off
for /D %%D in ("C:\directory_with_files_you_want_to_compress\*") do (
"%ProgramFiles(x86)%\WinRAR\Rar.exe" a -cfg- -ep -idq -m0 -x*.rar -v100m -y "C:\where_you_want_to_save_new_rar_files\%%~nxD.rar" "%%~fD\" "C:\directory_with_readme.txt\Readme.txt"
if not errorlevel 1 (
rd /Q /S "%%~fD"
) else (
echo/
pause
)
)
批處理代碼使用控制檯版本Rar.exe
,而不是GUI版本WinRAR.exe
,因爲完全沒有必要使用GUI版本用於此存檔文件創建任務。
開關-df
通過的RAR刪除所有壓縮文件是因爲readme.txt
刪除不應自動的RAR處理的第一個子目錄後刪除。該文件也必須添加到其他檔案文件以爲其他子目錄創建。相反,命令RD用於刪除已成功處理的子目錄。在創建的RAR存檔等錯誤已經存在並且被寫保護時,將輸出一條空行,並且echo/
和處理將以pause
停止。
交換機-idq
被添加到運行Rar在安靜模式下,導致只輸出錯誤。
開關-m0
和-v100m
導致只是存儲,而不是真正壓縮每個子目錄中的所有文件到每卷100 MB的多卷RAR存檔。因此,這個批處理文件顯然用於將已壓縮的存檔,音頻,圖像或視頻文件打包成多卷存檔。
交換機-y
被添加到自動可能的提示是的。
所有開關均記錄在文本文件Rar.txt
中WinRAR程序文件文件夾中。
我%%~fD
後添加一個反斜槓在有人的情況下,也不要使用此代碼與開關-ep1
代替-ep
,並添加開關-r
遞歸歸檔的每個子目錄,而無需子目錄名稱添加到存檔了。使用的交換機僅存檔每個子目錄中的文件,但不存檔其子目錄,儘管在創建多卷RAR存檔後完全刪除了已處理的子目錄。
又見對問題的答案: