7zip批处理文件,通配符压缩子文件夹

时间:2015-08-08 21:56:38

标签: batch-file 7zip

我有5000个唯一命名的父文件夹。每个父文件夹包含5-10个子文件夹。我需要中的每个子文件夹压缩然后删除5000个文件夹,每个子文件夹留下一个.7z文件,同时保留5000父文件夹的结构。

我一直使用以下脚本来压缩我的父文件夹。但是我不确定如何更改它以压缩 5000个文件夹中的所有文件夹。我认为这将涉及一些通配符,但广泛的谷歌搜索没有产生任何结果。

for /D %%A in (*) do "C:\Program Files\7-Zip\7z.exe" a -t7z -m9=lzma2 -mx -mmt2 "%%A.7z" -xr!*.bat "%%A"

最简单的解决方案是创建一个bat文件,将上面的bat文件复制到每个文件夹中,运行它,然后删除它。但是我假设7z具有此功能,我可能无法找到它。

编辑:发布了错误的例子

1 个答案:

答案 0 :(得分:2)

添加一个内部循环,它将枚举子文件夹,添加rd以删除它们:

for /D %%O in (*) do (
    for /D %%I in ("%%O\*") do (
        "C:\Program Files\7-Zip\7z.exe" a -t7z -m9=lzma2 -mx -mmt2 "%%I.7z" -r -xr!*.bat "%%I"
        rd /s /q "%%I"
    )
)

它将保留档案中的绝对路径,因此如果要排除基本文件夹,请使用cd/d

for /D %%O in (*) do (
    for /D %%I in ("%%O\*") do (
        pushd "%%~dpnxI"
        "C:\Program Files\7-Zip\7z.exe" a -t7z -m9=lzma2 -mx -mmt2 "..\%%~nxI.7z" -r -xr!*.bat .
        popd
        rd /s /q "%%~dpnxI"
    )
)

小心rd,也许你想要在没有它的情况下进行测试。