python - 如何使用 7-zip 命令(或任何替代解决方案)获取 RAR 文件卷索引
问题描述
我有一些文件(下载了 207 个 RAR 文件),它们没有正确的名称来引用每个部分/索引,如果我想提取它们,我应该通过检查卷索引(从属性部分)手动命名它们,并且如您所见,这可能太耗时
我以为我可以使用批处理或python脚本来做,所以我需要做的第一件事是从CMD“7z i FileName.rar”中获取卷索引,但是我找不到卷索引号(或者可能是十六进制)来自输出我使用了错误的命令吗?或者它是打印出来的,但我找不到?
我附上一个 RAR 文件输出(卷索引为 18 [这是第 19 部分]) https://www.pastiebin.com/5cee55060c642
如果您能帮助我,我将不胜感激。
解决方案
您应该能够使用l
(list) 命令完成此操作。
这是一个简单的 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
推荐阅读
- java - JPA CrudRepository 更新查询的问题
- python - Pipx安装问题/eth-brownie安装错误
- java - 我想将我的 JFrame 面板的大小更改为所选图像的大小这是我的代码
- jpa - 如何为 AND 和 OR 条件编写 JPA FindBy 查询
- java - 向现有数组添加新值(不使用 ArrayList)
- python - 从大熊猫数据框中格式化 QAbstractTableModel 中的选定列
- docker - 如何使用不同的宽带连接运行 Sitespeed 测试
- typescript - 理解 typescript 结构类型系统
- spring-boot - Apache Camel:Azure Blob 到 Azure Blob 路由、文件传输可行性
- sql-server - 使用“年”和“季度”列列出一个季度内的所有月份