在批处理中基于zip文件重命名提取的文件

时间:2012-07-24 15:59:35

标签: batch-file extract rename

我有多个zip文件,名称如001.zip,002.zip,003.zip,有可能达到999.zip。每个zip文件只有一个文本文件。我想使用Batch提取每个zip文件,然后将它提取的文本文件重命名为zip文件名。

例如,如果我提取001.zip,我希望提取的文本文件(所有提取的文本文件都有不同的名称)为名称001.txt。

我至少现在正在提取所有文件,但我对Batch太熟悉了,我不确定是否有一种简单的方法可以做到这一点?

cd test
echo     Decompressing zip4 data.
7z e *.zip

3 个答案:

答案 0 :(得分:5)

试试这个

md textfiles
for %%f in (*.7z) do (
7z e "%%f"
move *.txt textfiles\%%~nf.txt
)
xcopy textfiles\*.txt originalfolder
rd textfiles /s /q

请确保此文件夹中没有现有文本文件,这应该可以使用。它只是创建一个临时文件夹并将所有文本文件移动到那里(当时只有提取的文件文件存在但文件名不可知)并将其重命名为zip文件名。

完成所有提取和重命名后,只需将所有文本文件移回原始文件夹并删除临时文件夹。

希望这有帮助。

答案 1 :(得分:3)

for %F in (*.zip) do 7z e "%F" -so >"%~nF.txt" - 如前所述,如果zip存档中只有只有1个文件 (显示为直接从命令行执行,如果在批处理中使用%%F

答案 2 :(得分:0)

我有一个非常相似的问题,我采用了 wmz 的答案,并为批处理文件应用了 %%F 扭曲。

我的情况在小细节上略有不同:

  • 一个目录中有许多 Zip 7-Zip 存档文件(即多种存档类型)
  • 每个存档文件(以及其他文件)都包含一个 JPG 文件
  • 每个存档中的每个 JPG 都有一个不同的(随机)名称
  • 只应提取每个存档的 JPG 文件
  • 提取的文件应重命名为“archive-name.jpg”之类的内容

我的解决方案是一个具有此核心功能的 CMD/Batch 文件:

for %%F in (*.zip, *.7z) do 7z e "%%F" *.jpg -so >"%%~nF.jpg"