我正在尝试弄清楚如何在文件夹中的每个.rar文件中添加文件。
例如我有:
我希望将'readme.txt'文件添加到每个文件中。
或者,如果那是不可能的,我可以提取所有.rar文件,将它们转换成文件夹,然后使用这个批处理代码压缩它们?
如何包含readme.txt文件?
@ECHO OFF
cd C:\Users\userss\Desktop\compressing
SET PATH=C:;C:\Program Files\WinRAR;C:\Windows\system32;C:\Windows;C:\Win dows\System32\Wbem;%PATH%
FOR /f "delims=" %%d IN ('DIR /B') DO WinRAR a -m0 -ep "C:\Users\userss\Desktop\destination\%%~nxd.rar" "%%~fd"
EXIT
答案 0 :(得分:1)
我建议遵循:
@echo off
for /F "delims=" %%I in ('dir /B "%USERPROFILE%\Desktop\compressing\*.rar"') do "%ProgramFiles%\WinRAR\Rar.exe" a -ep -idq -y -m0 "%USERPROFILE%\Desktop\compressing\%%I" "%USERPROFILE%\Desktop\compressing\readme.txt"
有些人可能会认为,如果没有命令 DIR ,也可以使用:
@echo off
for %%I in ("%USERPROFILE%\Desktop\compressing\*.rar") do "%ProgramFiles%\WinRAR\Rar.exe" a -ep -idq -y -m0 "%%~I" "%USERPROFILE%\Desktop\compressing\readme.txt"
但这对FAT32驱动器不起作用,因为命令 FOR 再次修改后处理每个RAR存档会导致无限循环。
NTFS文件系统驱动程序返回按字母顺序排序的文件列表,而FAT32文件系统驱动程序返回存储在文件分配表(FAT)中的文件列表,其中FAT中的排序顺序随目录中的每个文件修改而变化。
以下循环可以避免FAT32驱动器上的无限循环:
@echo off
for %%I in ("%USERPROFILE%\Desktop\compressing\*.rar") do "%ProgramFiles%\WinRAR\Rar.exe" u -ep -idq -y -m0 "%%~I" "%USERPROFILE%\Desktop\compressing\readme.txt"
区别在于使用RAR命令u
而不是a
。这导致将单个文件添加到每个* .rar文件中一次。当 FOR 第二次为已更新的存档调用Rar.exe
时,RAR会检测到该文件已存在于存档中,并且不会再次修改RAR存档。因此,在Rar.exe
处理每个* .rar文件两次后(首先添加文件,第二次不更改任何内容), FOR 循环结束。
但是,使用命令 DIR 可避免在NTFS和FAT32驱动器上多次处理每个rar文件。
有必要使用GUI WinRAR.exe
而不是控制台Rar.exe
将readme.txt
添加到ZIP存档,因为控制台版本仅支持RAR存档,如文本文件{{1在 WinRAR 的程序文件文件夹中作为控制台版本的手册。
Rar.txt
交换机@echo off
for /F "delims=" %%I in ('dir /B "%USERPROFILE%\Desktop\compressing\*.zip"') do "%ProgramFiles%\WinRAR\WinRar.exe" a -ep -ibck -y -m0 "%USERPROFILE%\Desktop\compressing\%%I" "%USERPROFILE%\Desktop\compressing\readme.txt"
由交换机-idq
替换,用于在后台运行 WinRAR ,这意味着最小化到系统托盘。有关GUI版本的命令和开关的详细信息,请参阅选项卡内容 命令行模式一章中 WinRAR 的帮助。支持的GUI版本列表与支持的控制台版本列表略有不同。