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

时间:2015-01-29 20:55:50

标签: batch-file batch-processing 7zip

我有一个像这样的文件夹结构:

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

每个文件夹都有一堆tracelogXXXX,并且我已经获得了遍历每个文件夹的脚本的伪代码,将每个日志存档到其自己的 .zip中,并且然后删除存档外的tracelog(因为7zip没有移动功能)。

但我真的没有批处理经验,而且我甚至无法正常工作。

我无法从我目前的位置访问7zip的文档,所以我试过这个:

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

还有这个:

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

第一个去掉.z文件的每个实例的所有\ _slogs,使得每个zips大于最后一个。第二个为.log文件的每个实例创建一个拉链,其中没有任何内容。

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

1 个答案:

答案 0 :(得分:0)

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

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

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