如何使用 7-zip 命令(或任何替代解决方案)获取 RAR 文件卷索引

How to get RAR files volume index using 7-zip commands (or any alternative solutions)

我有一些文件(下载了 207 个 RAR 文件),它们没有一个合适的名称来引用每个 part/index,如果我想提取它们,我应该通过检查卷索引手动命名它们(来自属性部分),正如您所注意到的,这可能太耗时了

我想我可以使用批处理或 python 脚本来完成,所以我需要做的第一件事是从 CMD "7z i FileName.rar" 获取音量索引,但我无法从输出中找到卷索引号(或者可能是十六进制) 我使用了错误的命令吗? 或者可能它已打印但我找不到?

我附上一个 RAR 文件输出(卷索引为 18 [这是第 19 部分]) https://www.pastiebin.com/5cee55060c642

如果你能帮助我,我将不胜感激。

您应该可以使用 l (list) command 来完成此操作。

这是一个简单的 Windows 命令:

for %a in (*.rar) do @ECHO %a & "C:\Program Files-Zipz.exe" l %a | FIND "Index" & ECHO.

这是批处理文件版本(%% 而不是 %):

@ECHO off
for %%a in (*.rar) do ECHO %%a & "C:\Program Files-Zipz.exe" l %%a | FIND "Index" & ECHO.

这将从该文件的 l(列表)命令的输出中回显文件名和 "Volume Index" 字段,如下例所示:

myFile.part1.rar
Volume Index = 0

myFile.part2.rar
Volume Index = 1

myFile.part3.rar
Volume Index = 2

要按顺序重命名所有文件,您可以使用以下批处理文件。

警告 这将影响其 运行 所在目录中的 所有 文件,并且原始文件名将丢失。

@ECHO off

SET PATH=%PATH%;C:\Program Files-Zip\
for %%a in (*) do CALL:Index "%%~a"
GOTO:EOF

:Index
ECHO %~1
SETLOCAL EnableDelayedExpansion
for /f "tokens=3 delims== " %%a in ('7z.exe l "%~1" ^| FIND "Index"') do CALL:Rename "%~1" %%a
ENDLOCAL
GOTO:EOF

:Rename
SET /A Index=%2+1
REN "%~1" file%Index%.rar