4

嗨,我有很多 zip 文件位于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

我找到了这个问题,但它谈到 .txt 并且 zip 包含一个文件,所以它不起作用。

4

1 回答 1

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文件,那么您的提取命令可能如下所示:

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

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

于 2013-03-11T00:35:44.123 回答