【问题标题】:Rename extracted file based on zip file in Batch批量重命名基于zip文件的提取文件
【发布时间】:2012-07-23 00:03:26
【问题描述】:

我有多个名称为 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

【问题讨论】:

    标签: batch-file extract rename


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        试试这个

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

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

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

        希望这会有所帮助。

        【讨论】:

        • 对不起,我忘了说文本文件没有相同的名称。
        猜你喜欢
        • 1970-01-01
        • 2013-03-06
        • 2021-06-23
        • 2011-05-07
        • 2017-09-19
        • 1970-01-01
        • 2013-12-14
        • 2013-12-19
        相关资源
        最近更新 更多