将单个文件添加到文件夹中的每个rar文件

时间:2015-09-08 05:49:41

标签: batch-file command winrar

我正在尝试弄清楚如何在文件夹中的每个.rar文件中添加文件。

例如我有:

  • rar1.rar
  • rar2.rar
  • rar3.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

1 个答案:

答案 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.exereadme.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版本列表与支持的控制台版本列表略有不同。