【问题标题】:How to get RAR files volume index using 7-zip commands (or any alternative solutions)如何使用 7-zip 命令(或任何替代解决方案)获取 RAR 文件卷索引
【发布时间】:2019-10-14 21:32:09
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: python batch-file multipart 7zip rar


    【解决方案1】:

    您应该能够使用l (list) command 完成此操作。

    这是一个简单的 Windows 命令:

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

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

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

    这将回显该文件的l(list)命令的输出中的文件名和“卷索引”字段,如下例所示:

    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\7-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
    

    【讨论】:

    • 谢谢!我的问题已解决,甚至我不需要像您那样编写脚本。现在我知道我使用了错误的开关(i 而不是 l),因为“7z -h”为“i”开关回显了“显示有关支持的格式的信息”,我考虑使用它来获取音量索引,但显然,我应该已使用“l”开关。再次感谢您
    • (如果您希望我删除此评论,请@ping 我)。我注意到了这一点。它与您的帖子本身并没有真正相关,但我认为它可能会给您一个微笑:gonzalu 发布了一个 Answer 说“Worthwelle DAMN IT,你太棒了!我已经把头撞到墙上了两个多几个小时试图解决这个问题。非常感谢。我希望我有足够的声誉来评论你的答案或给你一个 UPVOTE!"
    猜你喜欢
    • 1970-01-01
    • 2010-09-21
    • 2016-10-16
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    • 2013-08-04
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多