liloli
V2EX  ›  问与答

难题!如何批量解压缩多个目录下的压缩包?

  •  
  •   liloli · May 10, 2012 · 13219 views
    This topic created in 5289 days ago, the information mentioned may be changed or developed.
    大概情况是这样的,有几百个目录,每个目录下有个ZIP文件,每个ZIP文件里还有个RAR文件,RAR文件里才是有用的东西。

    我想找个方法或软件,能够最快速地把每个目录下的ZIP解压到当前目录,再把每个RAR解开,最后删除ZIP和RAR。最后的结果是所有的目录都在,每个目录下只有压缩包里的东西。

    不知道我表述明白没有?
    16 replies  •  1970-01-01 08:00:00 +08:00
    Johnny
    Johnny
    May 10, 2012
    1
    自己动手写个shell
    ichigo
    ichigo
    May 10, 2012
    2
    这个似乎很难,帮顶吧,坐等楼下大神。
    AlloVince
    AlloVince
    May 10, 2012❤️1
    3
    何必写脚本,装个winrar

    文件管理器搜索*.zip

    全选,右键——解压到当前文件夹

    文件管理器搜索*.rar

    全选,右键——解压到当前文件夹

    文件管理器搜索*.rar,全选,删除
    文件管理器搜索*.zip,全选,删除
    wenhuacn
    wenhuacn
    May 10, 2012❤️1
    4
    0day 的东东是吧?
    你google 一下0day 解压,应该有方案
    Weakdancer
    Weakdancer
    May 10, 2012
    5
    import os
    #路径
    PATH="C:/"
    #解压
    for path in os.listdir(PATH):
    for f in os.listdir(path):
    if f.endswith("zip"):
    os.system("7z -x"+os.path.join(PATH,path,f))
    for f in os.listdir(path):
    if f.endswith("rar"):
    os.system("7z -x"+os.path.join(PATH,path,f))

    #删除
    for path in os.listdir(PATH):
    for f in os.listdir(path):
    if f.endswith("zip") or f.endswith("rar"):
    os.system("delete"+os.path.join(PATH,path,f))


    import os
    #路径
    PATH="C:/"
    #解压
    for path in os.listdir(PATH):
    for f in os.listdir(path):
    if f.endswith("zip"):
    os.system("7z -x"+os.path.join(PATH,path,f))
    for f in os.listdir(path):
    if f.endswith("rar"):
    os.system("7z -x"+os.path.join(PATH,path,f))

    #删除
    for path in os.listdir(PATH):
    for f in os.listdir(path):
    if f.endswith("zip") or f.endswith("rar"):
    os.system("delete"+os.path.join(PATH,path,f))


    我只是在手机上写了下,可能有问题,需要有7zip
    Weakdancer
    Weakdancer
    May 10, 2012❤️1
    6
    @AlloVince
    就是这样挺简单的,用everything搜索这个目录,全选解压,删除即可
    ydhydh
    ydhydh
    May 10, 2012
    7
    https://gist.github.com/2651850

    我比较懒,我只是把所有zip解压放到同一个文件夹下,因为我解压出来的rar是分卷压缩的,所以点一下就可以了,没有继续解压
    liloli
    liloli
    OP
    May 10, 2012
    8
    http://lh.rs/EsWWTm3bYzO5
    给各位提供个小的测试一下,按@AlloVince 的办法,我也以为可以,可是所有目录里的包都被解到某一个目录下了。
    liloli
    liloli
    OP
    May 10, 2012
    9
    目前用Zipghost实现了第一步,当前是每个目录下有个RAR包了,下一步目前没实现。

    @Weakdancer 谢谢!我不懂代码,不好意思哈!
    Leechael
    Leechael
    May 10, 2012
    10
    find ./ -iname '*.zip' -exec unzip {} \; && find ./ -iname '*.rar' -exec unrar {} \;

    上述为思路,并不保证这段 bash 命令能够正确运行。
    liloli
    liloli
    OP
    May 10, 2012❤️1
    11
    感谢各位的热心,尤其感谢@wenhuacn,看到你的关键字突然想起来了,多年以前用过这个软件: 0dayExtractor ,顺利完成任务。
    留个链接给需要的人:
    0dayExtractor v1.3
    http://lh.rs/zwPb7nB81Dih
    Choutreeman
    Choutreeman
    May 10, 2012
    13
    这个我觉得一个批处理都搞定了哦
    gavingeng
    gavingeng
    May 10, 2012
    14
    #!/bin/bash


    for f in `find . -name "*.zip"`;
    do
    zip -q -r $f;
    #rm -rf $f;
    done

    for f in `find . -name "*.rar"`;
    do
    rar x $f;
    #rm -rf $f;
    done
    kojp
    kojp
    May 11, 2012
    15
    shell +1

    各位大大都已经写好了。呵呵,我就不瞎凑热闹了。
    liloli
    liloli
    OP
    May 15, 2012
    16
    不能删除发过的回复么?不要下11楼的,有流氓软件,怪我当时太兴奋、太着急。这个安全:http://download.csdn.net/download/popsars/1058897
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1508 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 23:01 · PVG 07:01 · LAX 15:01 · JFK 18:01
    ♥ Do have faith in what you're doing.