使用 7zip 提取文件夹及其子文件夹中的所有 rar 文件

使用 7zip 提取文件夹及其子文件夹中的所有 rar 文件

我在 Windows 中具有以下文件夹结构:

D:\TV Shows
|
\----Show
|    |
|    \----S01
|    |     |
|    |     \----E01
|    |     |    |
|    |     |    \----E01.rar (contains E01.mkv)
|    |     \----E02
|    |     |    |
|    |     |    \----E02.rar (contains E02.mkv)
|    |     \----E03
|    |     |    |
|    |     |    \----E03.rar (contains E03.mkv)
|    |     ...
|    \----S02
|    |     |
|    |     \----E01
|    |     |    |
|    |     |    \----E01.rar (contains E01.mkv)
|    |     \----E02
|    |     |    |
|    |     |    \----E02.rar (contains E02.mkv)
|    |     \----E03
|    |     |    |
|    |     |    \----E03.rar (contains E03.mkv)
|    |     ...    
...

“D:\TV Shows\Show” 里面有几个不同的文件夹。每个文件夹又包含几个不同的文件夹。每个文件夹都包含一个 rar 文件。

我想通过批处理文件提取所有这些文件,重命名它们并将它们移动到父文件夹。然后,删除包含 rar 文件的文件夹。

期望的结果应该是以下结构

D:\TV Shows
|
\----Show
|    |
|    \----S01
|    |     |
|    |     \----E01.mkv
|    |     |    
|    |     \----E02.mkv
|    |     |    
|    |     \----E03.mkv
|    |     |    
|    |     ...
|    \----S02
|    |     |
|    |     \----E01.mkv
|    |     |    
|    |     \----E02.mkv
|    |     |    
|    |     \----E03.mkv
|    |     |    
|    |     ...    
...

我浏览过几篇类似的帖子,但没有一篇符合我的描述……

这是我尝试过的(它可以工作但不是干净的代码......)

@echo off

for /d %%P in (*) do (
    for /d %%D in ("%%P\*") do (
        echo Now visiting %%D
        @REM extracting
        for /f "delims=" %%R in ("%%D\*.rar") do (
            "C:\Program Files\7-Zip\7z.exe" x -aos -o"%%~dpR" "%%R"
        )
        @REM renaming
        for /f "delims=" %%M in ("%%D\*.mkv") do (
            ren "%%M" "%%D.mkv"
        )
        @REM moving
        for /f "delims=" %%N in ("%%D\*.mkv") do (
            move %%N %%P
        )
        @REM deleting folder
        rmdir /q /s %%D
        echo.
    )
)

相关内容