我有一个根目录,其中有许多不同的子目录,其中包含 .zip 文件(见下面的示例)。我需要批处理/.cmd/etc 来解压其子目录中的 zip 文件,并将解压的文件(.tif)重命名为与 zip 文件相同的名称。我研究了一下,找到了以下代码,但这只有在放在子目录中时才有效。不是父文件夹。如何使此代码在所有子目录中工作,如所述?
示例文件结构
C:\This\Is\Random\Parent\Sub\Sub\1234.zip {ABCD.tif}
我正在寻找什么 C:\This\Is\Random\Parent\Sub\Sub\1234.tif
set work=%temp%\%random%%random%%random%%random%
mkdir "%work%" || goto :eof
for %%A in ('dir /b /s *.zip *.rar') do (
"%ProgramFiles%\7-Zip\7z.exe" e -o"%work%" "%%~A"
for %%F in ("%work%\*") do move "%%~F" "%%~nA%%~xF"
)
rmdir "%work%"
答案1
我可以进行以下更改来实现我想要的效果
set work=%temp%\%random%%random%%random%%random%
mkdir "%work%" || goto :eof
for /F %%I IN ('dir /b /s *.zip *.rar') do (
"%ProgramFiles%\7-Zip\7z.exe" x -o"%work%" "%%~I"
for %%F in ("%work%\*") do move "%%~F" "%%~nI%%~xF"
)
rmdir "%work%"
现在唯一的问题是提取的 .tif 名称中包含“.zip”。如能帮助解决,我们将不胜感激