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


2

我有一个文本文件,我希望与特定文件夹中的每个文件一起存档。

例如,文件夹有:File1File2File3,和TextDoc1

我想创建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"

等等

Zip或Rar很好。

Answers:


1

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

for %%f in (*)表示当前目录中的每个文件 - DO创建ZIP文件的命令(其详细信息无关紧要) - 除非您正在考虑TextDoc1文件本身。跳过它,否则你将创建一个TextDoc1.zip文件,其中包含两个TextDoc1副本(或者可能只有一个,具体取决于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,我们可能会遇到问题。


感谢您的帮助和澄清。我是使用命令的新手,所以这段代码是我系统的一个很好的基础。
Luke

0

这是您可以尝试的批次:

@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”。


谢谢你的快速反应!抱歉,文件夹中的文件不一定按顺序编号。说FileABC,FileDEF,FileGHI和TextDoc1更合适。感谢您的时间/精力!
Luke
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.