7zip 批处理文件,通配符压缩子文件夹的内容
7zip Batch-file, Wildcard Compress contents of subfolders
我有 5000 个唯一命名的父文件夹。每个父文件夹包含 5-10 个子文件夹。我需要 5000 个文件夹中的每个子文件夹压缩然后删除,每个子文件夹留下一个 .7z 文件,同时保持 5000 个父文件夹的结构。
我一直使用下面的脚本来压缩我的父文件夹。但是我不确定如何更改它以压缩 5000 个文件夹中的所有文件夹。我假设它会涉及一些通配符,但广泛的 google 搜索没有产生任何结果。
for /D %%A in (*) do "C:\Program Files-Zipz.exe" a -t7z -m9=lzma2 -mx -mmt2 "%%A.7z" -xr!*.bat "%%A"
最简单的解决方案是创建一个 bat 文件,将上述 bat 文件复制到每个文件夹中,运行 然后删除它。但是我假设 7z 有这个功能,但我找不到它。
编辑:发布了错误的例子
添加一个内循环,它将枚举子文件夹并rd
删除它们:
for /D %%O in (*) do (
for /D %%I in ("%%O\*") do (
"C:\Program Files-Zipz.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-Zipz.exe" a -t7z -m9=lzma2 -mx -mmt2 "..\%%~nxI.7z" -r -xr!*.bat .
popd
rd /s /q "%%~dpnxI"
)
)
小心 rd
,也许你会想要在没有它的情况下进行测试 运行。
我有 5000 个唯一命名的父文件夹。每个父文件夹包含 5-10 个子文件夹。我需要 5000 个文件夹中的每个子文件夹压缩然后删除,每个子文件夹留下一个 .7z 文件,同时保持 5000 个父文件夹的结构。
我一直使用下面的脚本来压缩我的父文件夹。但是我不确定如何更改它以压缩 5000 个文件夹中的所有文件夹。我假设它会涉及一些通配符,但广泛的 google 搜索没有产生任何结果。
for /D %%A in (*) do "C:\Program Files-Zipz.exe" a -t7z -m9=lzma2 -mx -mmt2 "%%A.7z" -xr!*.bat "%%A"
最简单的解决方案是创建一个 bat 文件,将上述 bat 文件复制到每个文件夹中,运行 然后删除它。但是我假设 7z 有这个功能,但我找不到它。
编辑:发布了错误的例子
添加一个内循环,它将枚举子文件夹并rd
删除它们:
for /D %%O in (*) do (
for /D %%I in ("%%O\*") do (
"C:\Program Files-Zipz.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-Zipz.exe" a -t7z -m9=lzma2 -mx -mmt2 "..\%%~nxI.7z" -r -xr!*.bat .
popd
rd /s /q "%%~dpnxI"
)
)
小心 rd
,也许你会想要在没有它的情况下进行测试 运行。