Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 7zip批处理文件,通配符压缩子文件夹的内容_Batch File_7zip - Fatal编程技术网

Batch file 7zip批处理文件,通配符压缩子文件夹的内容

Batch file 7zip批处理文件,通配符压缩子文件夹的内容,batch-file,7zip,Batch File,7zip,我有5000个唯一命名的父文件夹。每个父文件夹包含5-10个子文件夹。我需要压缩5000个文件夹中的每个子文件夹,然后将其删除,这样在保持5000个父文件夹结构的同时,每个子文件夹只剩下一个.7z文件 我一直使用下面的脚本压缩我的父文件夹。但是,我不确定如何将其更改为压缩5000个文件夹中的所有文件夹。我认为这将涉及一些通配符,但大量的谷歌搜索并没有产生任何结果 for /D %%A in (*) do "C:\Program Files\7-Zip\7z.exe" a -t7z -m9=lzm

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

我一直使用下面的脚本压缩我的父文件夹。但是,我不确定如何将其更改为压缩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有这个功能,我就是找不到


编辑:发布了错误的示例

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

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
,也许你想在没有它的情况下进行测试运行。

老兄,你在这方面非常有耐心和棒极了,希望我花更多时间处理bat文件,它们非常有用和有能力!谢谢你,伙计,这是完美的画面!工作得很好!