4

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

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

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

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

3 回答 3

5

for %F in (*.zip) do 7z e "%F" -so >"%~nF.txt" - provided there is only 1 file in in zip archive as you said (shown as if executed directly from command line, if used in batch use %%F)

于 2012-07-24T16:39:51.600 回答
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 文件名。

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

希望这可以帮助。

于 2012-07-24T16:11:39.703 回答
0

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

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

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

我的解决方案是具有以下核心功能的 CMD/批处理文件:

for %%F in (*.zip, *.7z) do 7z e "%%F" *.jpg -so >"%%~nF.jpg"
于 2021-01-21T02:29:12.707 回答