批处理文件到zip文件 - 适用于子目录

时间:2017-04-01 00:55:40

标签: batch-file zip

我希望将批处理文件应用于所有子目录。

我有很多文件夹。每个文件夹都包含文件对
xxx1.mp3和xxx1.cdg,
xxx2.mp3和xxx2.cdg,

我有一个7zip批处理文件,它将查找文件对并创建一个zip文件xxx1.zip,xxx2.zip并删除(现在)冗余的cdg / mp3文件。

但是,只有在每个单独的文件夹中运行bat文件时,这才有效。我真正想要的是添加到bat文件的开关,如果我在根目录中运行,它也将遍历所有子目录。

我目前运行的代码是:

FOR  %F IN (*.cdg) DO "C:\Program Files\7-Zip\7Z.exe" a "%~nF.zip" "%~nF.cdg" "%~nF.mp3" -sdel

任何帮助?

1 个答案:

答案 0 :(得分:0)

FOR /R %%F IN (*.cdg) DO IF EXIST "%%~dpnF.mp3" pushd "%%~dpF"&ECHO("C:\Program Files\7-Zip\7Z.exe" a "%%~nF.zip" "%%~nF.cdg" "%%~nF.mp3" -sdel&POPD

请注意,这是一个批次行 - 要从提示符执行,请将元变量中的每个%%减少到%(但是将它放入更加容易通过剪切和粘贴批处理;保存所有这些错别字...)

所需命令仅用于ECHO以用于测试目的。 在您确认命令正确之后,删除在命令实际执行命令之前出现的字符串ECHO(

使用for /r将遍历与提供的掩码匹配的文件名(也可以添加起始目录 - 请参阅提示中的for /?|more。)

由于我们知道所选的完整文件名存在,首先检查配对文件是否存在,然后切换到所需目录,存档并切换回来。