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

2012-05-10 15:57:59 +08:00
 liloli
大概情况是这样的,有几百个目录,每个目录下有个ZIP文件,每个ZIP文件里还有个RAR文件,RAR文件里才是有用的东西。

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

不知道我表述明白没有?
11532 次点击
所在节点    问与答
16 条回复
Johnny
2012-05-10 16:03:18 +08:00
自己动手写个shell
ichigo
2012-05-10 16:05:04 +08:00
这个似乎很难,帮顶吧,坐等楼下大神。
AlloVince
2012-05-10 16:15:14 +08:00
何必写脚本,装个winrar

文件管理器搜索*.zip

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

文件管理器搜索*.rar

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

文件管理器搜索*.rar,全选,删除
文件管理器搜索*.zip,全选,删除
wenhuacn
2012-05-10 16:17:20 +08:00
0day 的东东是吧?
你google 一下0day 解压,应该有方案
Weakdancer
2012-05-10 16:19:43 +08:00
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
2012-05-10 16:21:41 +08:00
@AlloVince
就是这样挺简单的,用everything搜索这个目录,全选解压,删除即可
ydhydh
2012-05-10 16:23:34 +08:00
https://gist.github.com/2651850

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

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

上述为思路,并不保证这段 bash 命令能够正确运行。
liloli
2012-05-10 16:50:14 +08:00
感谢各位的热心,尤其感谢@wenhuacn,看到你的关键字突然想起来了,多年以前用过这个软件: 0dayExtractor ,顺利完成任务。
留个链接给需要的人:
0dayExtractor v1.3
http://lh.rs/zwPb7nB81Dih
CoX
2012-05-10 17:29:15 +08:00
sophy
2012-05-10 19:07:58 +08:00
这个我觉得一个批处理都搞定了哦
gavingeng
2012-05-10 23:16:14 +08:00
#!/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
2012-05-11 00:01:13 +08:00
shell +1

各位大大都已经写好了。呵呵,我就不瞎凑热闹了。
liloli
2012-05-15 16:05:13 +08:00
不能删除发过的回复么?不要下11楼的,有流氓软件,怪我当时太兴奋、太着急。这个安全:http://download.csdn.net/download/popsars/1058897

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/35371

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX