WinRar 命令将文件夹内的每个文件与另一个文件一起压缩(Zip)

WinRar 命令将文件夹内的每个文件与另一个文件一起压缩(Zip)

我有一个文本文件,我想将其与特定文件夹中的每个文件一起存档。

例如文件夹中有:File1File2File3TextDoc1

我想要创建File1.zip(包括File1TextDoc1),File2.zip(包括File2TextDoc1),和File3.zip(包括File3TextDoc1)。

是否有可以运行的批处理命令(作为 .bat)来创建这些档案,而不是单独创建每个档案?我一直在使用 listfiles,但我仍然需要创建每个.txt包含文件名的文件。

这是我一直在使用的:

"C:\Program Files\WinRAR\WinRAR.exe" a -esh -m3 -mt2 -r -t "File1.zip" @"File1.txt"
"C:\Program Files\WinRAR\WinRAR.exe" a -esh -m3 -mt2 -r -t "File2.zip" @"File2.txt"

ETC。

Zip 或 Rar 都可以。

答案1

@echo off for %%f in (*) do (       if not %%f==TextDoc1 (            (你的命令来创建%%~nf.zip包含%%fTextDoc1       ) )

for %%f in (*)表示针对当前目录中的每个文件 —DO创建 ZIP 文件的命令(其细节无关紧要) — 除非您考虑的是 TextDoc1 文件本身。跳过该命令,否则您将创建一个包含两个 TextDoc1 副本的 TextDoc1.zip 文件(或者可能只有一个,具体取决于 WinRAR 的工作方式)。

一个棘手的事情是%%~nf,它是 的文件名部分%%f(删除了扩展名)。我之所以使用它,是因为虽然您给出了 File1、File2 和 File3 作为示例文件名,但我猜您还有 File4.txt、résumé.doc、flower.jpg 等。我大胆猜测您希望将 ZIP 文件命名为 File4.zip、résumé.zip 和 flower.zip,而不是 File4。TXT.zip,简历.doc.zip 和花.jpg.zip。当然,这意味着如果有 schedule.mpp 和 schedule.xls,我们可能会遇到问题。

答案2

您可以尝试以下一批:

@echo off

rem Set highest number
set /a highcount=3

rem Initialize counter to 1
set /a counter=1

:loop
start /wait "C:\Program Files\WinRAR\WinRAR.exe" a -esh -m3 -mt2 -r -t "File%counter%.zip" "File%counter%"
start /wait "C:\Program Files\WinRAR\WinRAR.exe" a -esh -m3 -mt2 -r -t "File%counter%.zip" "TextDoc1"

rem Increment the counter by 1
set /a counter+=1

rem If the counter is less than or equal to "highcount", then loop and do the next file.
if %counter% LEQ %highcount% goto loop

这应该会创建 3 个名为 File1.zip、File2.zip 和 File3.zip 的 zip 文件,每个文件都有一个匹配的“File#”文件和(相同的)“TextDoc1”。

相关内容