【问题标题】:Batch Rename contents of ZIP file to ZIP file name将 ZIP 文件的内容批量重命名为 ZIP 文件名
【发布时间】:2013-03-06 00:03:22
【问题描述】:

我的问题非常相似:

Rename extracted file based on zip file in Batch

我有 470 个 .zip 文件,每个文件包含两个文件(.mp3 和 .cdg)——它们是卡拉 OK 文件。

ZIP 文件的名称简洁明了(Abba - Money Money Money.zip),但是 ZIP 文件的内容需要重命名(例如 FIK001ABBA_02_-ABBA-_MONEY_MONEY_MONEY.mp3)。

所以,我希望批处理文件执行以下操作:

  • 解压文件
  • 将 zip 文件的内容重命名为 zip 文件名。
  • 例如:
  • FIK001ABBA_02_-ABBA-_MONEY_MONEY_MONEY.mp3
  • FIK001ABBA_02_-ABBA-_MONEY_MONEY_MONEY.cdg
  • 重命名为
  • Abba - Money Money Money.mp3
  • Abba - Money Money Money.cdg
  • 然后将文件添加回 zip 文件中

我查看了上面类似的帖子,但是,它谈到解压缩 *.7z 我的文件是 *.Zip。请解释:-)

代码如下:

md textfiles
for %%f in (*.zip) do (
winzip -v "%%f"
move *.txt textfiles\%%~nf.txt
)
xcopy textfiles\*.txt originalfolder
rd textfiles /s /q

【问题讨论】:

  • 请出示您已经制作的代码。
  • 请看我上面的代码。问题:我需要下载7Zip吗??
  • 你需要有一些压缩软件来解压你的文件。 7Zip 是一个很好的候选,但 WinZip 或其他也可以工作。
  • Winzip 有命令行吗?
  • 好的。我更新了我的代码(我添加了 wzzip -v "%%f")。我还应该注意,我在一个名为“test”的文件夹中运行此脚本,其中包含一个名为 (001.zip) 的 ZIP 文件,其中包含一个名为 TEST.txt 的文件。

标签: batch-file zip rename


【解决方案1】:
@ECHO OFF
SETLOCAL 
(SET workdir=.\textfiles)
IF EXIST "%workdir%\." ECHO Choose a directory name that doesn't exist&GOTO :EOF 
FOR %%f IN (*.zip) DO CALL :process %%f
GOTO :eof

::
::  
::
:process
MD "%workdir%"
wzunzip %1 "%workdir%" >nul
PUSHD "%workdir%"
FOR /f "tokens=1*delims=-" %%i IN ('dir /b /a-d') DO CALL :procren %%i %%j
POPD
:: Not sure whether you want to ADD (as you say) 
:: or REPLACE (seems more logical)
:: 
DEL %1
wzzip -m %1 "%workdir%\*.*" >nul
IF EXIST "%workdir%\." RD "%workdir%" /S /Q
GOTO :eof

:procren %%i %%j
SET filename=%1-%2
SET newname=%2
SET newname=%newname:_= %
SET newname=%newname:-= -%
REN %filename% "%newname%"
GOTO :eof

只是一些注意事项:

  • 我不确定您是要添加还是替换 .ZIP 文件的内容。代码将替换。如果您真的想添加,请删除 DEL %1 行。
  • WINZIP7ZIP 不同,但产品相似
  • 我使用的是相对较旧的 WINZIP 版本,它有一对可用于批量使用的命令行实用程序(WZZIPWZUNZIP
  • 我的WZZIP 版本(v3.2,内部版本 8668)似乎存在一个错误,如果"dirname\*.* 被移动到 zip 中,-m(移动)选项将delete 目录。我会追究这一点 - 但这就是为什么工作目录的 RD 被门控并与 MD 一起放置在 :process 例程中,而不是在主例程中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-23
    • 1970-01-01
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    • 2016-05-19
    • 1970-01-01
    • 2013-12-14
    相关资源
    最近更新 更多