我的问题非常类似于:
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)。 / p>
所以,我希望批处理文件执行以下操作:
我查看了上面的类似帖子,然而,它谈到解压缩* .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
答案 0 :(得分: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
只是几点说明:
DEL %1
行。WINZIP
和7ZIP
不同,但类似的产品WINZIP
,它有一对可用的命令行实用程序(WZZIP
和WZUNZIP
),用于批量使用WZZIP
版本(v3.2,版本8668)似乎存在错误,其中-m
(移动)选项将delete
目录"dirname\*.*
被拉进了拉链。我会追逐这个 - 但这就是为什么工作目录的RD被门控并放在:process
例程中的MD而不是主例程中。