批处理 - 提取许多zip,重命名在同一目录中提取的文件

时间:2013-03-10 22:51:16

标签: batch-file zip extract

嗨,我在g:\toto有很多zip文件。这些拉链包含一些文件。我想在同一目录(g:\toto\extracted)中提取所有zip,然后重命名zip的各种文件。

示例1:

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

我想在提取后,使用zip的名称重命名文件

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包含一个文件,所以,它不起作用。

1 个答案:

答案 0 :(得分:4)

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

但是,如果有一个临时放置文件的专用目录,这将会容易得多。以下是您可以使用它的方法:

@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%\*"以确保它是。

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

<强>更新

如果您使用7-Zip归档程序来处理.zip文件,那么这就是您的extract命令的外观:

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

免责声明:我不是7-Zip的活跃用户。这就是我用来作为参考来提出上述命令: