使用 7zip 和 FOR /R 归档子文件夹内容的批处理脚本

Batch script to archive subfolder contents using 7zip with FOR /R

我有这样的文件夹结构:

C:\\Logs\logs1\tracelogXXXX.log  
C:\\Logs\logs2\tracelogXXXX.log  
C:\\Logs\logs3\tracelogXXXX.log

每个文件夹都有一堆 tracelogXXXX,我有一个脚本的伪代码,它循环遍历每个文件夹,将每个日志存档到它的 own .zip,然后删除存档外的跟踪日志(因为 7zip 没有移动功能)。

但是我真的没有批处理经验,甚至无法正常压缩。

我目前无法访问 7zip 的文档,所以我尝试了这个:

CD C:\Logs
FOR /R %%i IN ("*.log") DO "C:\...za.exe" a -tzip "%%i.zip"

还有这个:

CD C:\Logs
FOR /R %%i IN ("*.log") DO "C:\...za.exe" a -tzip "%%i.zip" "%%i\"

第一个压缩 .log 文件的每个实例的所有 \Logs,使许多压缩一个比一个大。第二个为 .log 文件的每个实例制作 zip,其中没有任何内容。

如何在从父目录操作时将每个日志文件压缩到自己的 zip 文件中,并以其自身命名?一旦我弄清楚这个语法有什么问题,之后删除外部文件似乎并不难,但这是重要的部分!

您可以从命令行执行此操作,无需批处理文件:

FOR /F "usebackq tokens=* delims=" %A IN (`DIR "C:\Logs\*.log" /B /S`) DO "C:\Path\Toza.exe" a "%~dpnA.zip" "%~fA" & DEL "%~fA"

要在批处理文件中使用,只需将每个 % 替换为 %%