Извлечь файлы, соответствующие шаблону из архива RAR

276
user2993079

У меня есть архив RAR, и я хочу извлечь все файлы с трехзначным номером в качестве расширения. Я пытался с Winrar, но он не принимает регулярные выражения:

winrar.exe e -y pinetinf pinet.[0-9*] . // pattern: does not work winrar.exe e -y pinetinf pinet.222 . // single file name: WORK 

Как я могу извлечь все файлы, чьи имена имеют трехзначное расширение?

0
Боюсь, ты не сможешь. Toto 6 лет назад 0
Я думаю, что вы можете использовать опцию `list`` rar` (или вы можете использовать 7-zip, который также может извлекать файлы из rar), затем пропустить результат в некоторый фильтр (некоторый внешний инструмент, который будет извлекать нужные вам имена файлов без PITA), затем извлечь файлы, использующие опции `include` архиватора вместе с опцией extract. Alex 6 лет назад 0

1 ответ на вопрос

0
bcs78

Вы не можете сделать это, используя только WinRAR, но вы можете вызвать Powershell, чтобы помочь вам с фильтрацией.

Выведите список файлов из архива и перенаправьте вывод в цикл for, чтобы извлечь необходимые файлы в консоли Powershell.

& 'UnRAR.exe' 'lb' '.\file.rar' | ForEach-Object { If($_ -like '*.[0-9][0-9][0-9]') { & 'UnRAR.exe' 'e' '.\file.rar' $_ } } 

В качестве альтернативы вы можете создать файл списка и запустить unrar.exe только один раз, чтобы извлечь файлы (возможно, это будет немного быстрее, если у вас будет много файлов).

& 'UnRAR.exe' 'lb' '.\file.rar' | ForEach-Object { If($_ -like '*.[0-9][0-9][0-9]') { Out-File '.\files.list' -InputObject $_ -Append } } | & 'UnRAR.exe' 'e' '.\file.rar' '-n@.\files.list' 

Похожие вопросы