如何使用 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
我有一些文件(下载了 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