这很容易实现,因为控制台版本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存档后完全删除了已处理的子目录。
又见对问题的答案: