我有一个文本文件,我想将其与特定文件夹中的每个文件一起存档。
例如文件夹中有:File1
、File2
、File3
和TextDoc1
。
我想要创建File1.zip
(包括File1
和TextDoc1
),File2.zip
(包括File2
和TextDoc1
),和File3.zip
(包括File3
和TextDoc1
)。
是否有可以运行的批处理命令(作为 .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
包含%%f
和TextDoc1
)) )
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”。