2013-03-10 93 views
3

嗨,我有许多zip文件位于g:\toto。这些zip包含一些文件。我想提取同一目录中的所有zip文件(g:\toto\extracted),然后重命名zip文件。批量 - 提取许多zip文件,重命名在同一目录中提取的文件

实施例1:

www_12567.vp.zip : 3 files : alpha.doc, beta.xls, teta.doc 

我将提取后喜欢,文件被重命名与拉链的名称

www_12567.vp.alpha.doc, www_12567.vp.beta.xls, www_12567.vp.teta.doc 

实施例2:

www_12.vp.zip : 3 files : al.doc, bea.xls, tta.doc 
www_12.vp.al.doc, www_12.vp.bea.xls, www_12.vp.tta.doc 

我发现this question,但它谈及.txt,并且zip包含一个文件,所以它不起作用。

回答

3

不知道档案的内容,您无法知道要重命名哪些文件,因为您将它们放入可能已包含其他文件的目录中。

但是,如果有一个专门的目录临时放置这些文件,这样会容易得多。以下是如何使用它:

@ECHO OFF 
SET "srcdir=G:\toto" 
SET "tgtdir=G:\toto\extracted" 
SET "tmpdir=G:\toto\extracted-tmp" 
FOR %%Z IN ("%srcdir%\*.zip") DO (
    unpack "%%Z" with your favourite tool into "%tmpdir%" 
    FOR %%I IN ("%tmpdir%\*") DO MOVE "%%I" "%tgtdir%\%%~nZ.%%~nxI" 
) 

当然,临时目录需要在运行批处理文件之前是空的。您可以在循环前的某处添加DEL "%tmpdir%\*"以确保它是。

另一个需要注意的是,上面假设档案不包含子目录,或者至少,这些文件是在没有子目录的情况下提取的。

UPDATE

如果您使用的是7-Zip的归档与.zip文件工作,那么这就是你提取命令可能如下:

7z e "%%Z" -o"%tmpdir%" 

免责声明:我不是7-Zip的活跃用户。这是我作为一个参考拿出上面的命令:

+0

顶部之上,它的工作原理,谢谢! – 2013-03-12 19:31:11

+0

太棒了!你为我节省了很多工作。 :) – erroric 2013-10-02 21:28:46