Как получить индекс объема файлов RAR, используя 7-zip команды (или любые альтернативные решения) - PullRequest
0 голосов
/ 29 мая 2019

У меня есть несколько файлов (загружено 207 RAR-файлов), и у них нет правильного имени для ссылки на каждую часть / индекс, и если я хочу извлечь их, я должен назвать их вручную, проверив индекс тома (из раздела Свойства ) и, как вы заметили, это может занять слишком много времени

Я подумал, что мог бы сделать это, используя пакетный или Python-скрипт, поэтому первое, что мне нужно было сделать, это получить индекс тома из CMD "7z i FileName.rar", но я не смог найти том номер индекса (или, возможно, HEX) из вывода Я использую неправильную команду? Или, может быть, оно напечатано, но я не могу его найти?

Я прикрепляю один из выходных файлов RAR (индекс тома 18 [Это 19-я часть]) https://www.pastiebin.com/5cee55060c642

Я был бы благодарен, если бы вы могли мне помочь.

1 Ответ

0 голосов
/ 29 мая 2019

Вы сможете выполнить это с помощью команды l (список) .

Вот простая команда 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.

Это отобразит имя файла и поле "Volume Index" из вывода команды 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
...