Powershell: извлечение нескольких частей RAR

У меня есть папка с n файлами rar, некоторые из которых имеют .part01, .part02, поскольку они разделены. код, который я сейчас использую, приведен ниже.

$Rars = Get-ChildItem -path 'c:\demopath' -filter "*.rar"  
$Destination = 'c:\demopath'
$WinRar = "C:\Program Files\WinRAR\WinRAR.exe"


foreach ($rar in $Rars)
{
&$Winrar x -y $rar.FullName $Destination
Get-Process winrar | Wait-Process
}

Этот код запускается много раз, чтобы снова и снова извлекать один и тот же файл по количеству частей, которые он имеет. например, если файл состоит из 3 частей, он будет извлекать один и тот же файл 3 раза (перезаписывая ранее извлеченный файл). для одного файла rar нет проблем. если я даю только «x», то это дает всплывающие окна для файла, который уже существует. нужно решение, которое не будет выдавать никаких всплывающих окон и извлекать только в том случае, если в каталоге нет файла с таким же именем. может кто-нибудь помочь мне решить эту проблему?


person Premjit Chowdhury    schedule 12.03.2018    source источник
comment
UnRAR.exe, Rar.exe и WinRAR.exe поддерживают все C:\demopath\*.rar в качестве шаблона имени архивного файла для извлечения всех архивов в указанном каталоге либо в указанный целевой каталог, либо в подкаталоги в указанном целевом каталоге, причем имя каждого подкаталога является именем файла архива при использовании переключателя -ad. Все три исполняемых файла автоматически обнаруживают многотомные архивы в исходном каталоге и извлекают их все только один раз. Таким образом, вам вообще не понадобился бы сценарий PowerShell с циклом для извлечения всех архивных файлов *.rar в каталоге.   -  person Mofi    schedule 12.03.2018
comment
Текстовый файл Rar.txt в папке программных файлов WinRAR, являющийся руководством для консольной версии Rar.exeUnRAR.exe), объясняет эту возможность извлечения нескольких архивов с помощью одной командной строки. А справка WinRAR на вкладке Содержание под пунктом списка Режим командной строки поясняет этот метод и для GUI версии WinRAR.exe. Так что чтение документации было бы полезно в вашем случае.   -  person Mofi    schedule 12.03.2018
comment
мне нужно использовать powershell для автоматизации нескольких других задач. поэтому, пожалуйста, дайте свое решение с учетом powershell.   -  person Premjit Chowdhury    schedule 13.03.2018


Ответы (1)


решена проблема с использованием бесплатного программного обеспечения unrar в каталоге winrar. все, что мне было нужно, это использовать параметр "-o-", чтобы остановить перезапись существующего извлеченного файла. та же команда будет работать и с winrar.exe

&$UnRAR x -o- $rar.FullName $Destination
person Premjit Chowdhury    schedule 12.03.2018