嗨,我在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包含一个文件,所以,它不起作用。
答案 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的活跃用户。这就是我用来作为参考来提出上述命令: