从批处理文件中,我需要递归目录(和子目录)并将找到的每个 zip 文件解压缩到其当前目录 w/delete 的存档中

From batch file, I Need to recurse directories (and sub directories) and unzip every zip file found into their current directory w/delete of archive

从批处理文件中,我需要递归目录(和子目录)并将找到的每个 zip 文件解压缩到存档的当前目录 w/delete

因此,使用批处理文件或类似的脚本方法,我想从起始路径位置递归所有目录和子目录,并且对于找到的每个 zip 文件,我想将内容解压缩到位(到相同的位置)目录作为 zip 文件),如果成功,我想删除 zip 文件。

我已经很长时间没有制作 bat 文件了,所以寻求任何我能得到的帮助。

我尝试过的:

@echo off

echo ******
echo List all zip files using for /f
echo ******
for /f "tokens=*" %%r in ('dir *.* /ad /b') do for %%s in ("%%r\*.zip") do echo ---unzip %%s using output folder %%~dps

echo.
echo ******
echo List all zip files using for /d
echo ******
for /d %%r in (*) do for %%s in ("%%r\*.zip") do echo ---unzip %%s using output folder %%~dps

echo.
echo 1: extract to folders containing zip files - possible overwrites
echo 2: extract each zip to a folder named by the name of the zip file
choice /c 12
if not errorlevel 2 (

    for /d %%r in (*) do for %%s in ("%%r\*.zip") do "C:\Program Files-Zipz.exe" x -y "%%s" -o"%%~dps" && del "%%s"





) else (

rem ------ this is the alternative to extract each zip to its own folder
    for /d %%r in (*) do for %%s in ("%%r\*.zip") do (
        echo.
        echo ******
        echo *** Unzipping: %%s to folder: %%~dpns
        mkdir "%%~dpns"
        "C:\Program Files-Zipz.exe" x -y "%%s" -o"%%~dpns"  && del "%%s"
    )
rem ------

)
pause

exit /b

此代码适用于第一个目录,但不会进一步向下递归到子目录:

C:\dir1\aaa.zip
c:\dir2\bbb.zip
C:\Dir2\SUB1\AAA.zip    <====  my code is not extracting this zip in the subdirectory.
... do (
 ... 7z x ....
 if errorlevel 1 (echo fail %%s) else (echo del %%s)
)

应该可以解决您的问题。 7zip 似乎遵循规则,return errorlevel 成功则为 0,否则为 non-zero。 if errorlevelerrorlevel 的 run-time 值进行运算。