У меня есть папка с 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», то это дает всплывающие окна для файла, который уже существует. нужно решение, которое не будет выдавать никаких всплывающих окон и извлекать только в том случае, если в каталоге нет файла с таким же именем. может кто-нибудь помочь мне решить эту проблему?
UnRAR.exe
,Rar.exe
иWinRAR.exe
поддерживают всеC:\demopath\*.rar
в качестве шаблона имени архивного файла для извлечения всех архивов в указанном каталоге либо в указанный целевой каталог, либо в подкаталоги в указанном целевом каталоге, причем имя каждого подкаталога является именем файла архива при использовании переключателя-ad
. Все три исполняемых файла автоматически обнаруживают многотомные архивы в исходном каталоге и извлекают их все только один раз. Таким образом, вам вообще не понадобился бы сценарий PowerShell с циклом для извлечения всех архивных файлов *.rar в каталоге. - person Mofi   schedule 12.03.2018Rar.txt
в папке программных файлов WinRAR, являющийся руководством для консольной версииRar.exe
(иUnRAR.exe
), объясняет эту возможность извлечения нескольких архивов с помощью одной командной строки. А справка WinRAR на вкладке Содержание под пунктом списка Режим командной строки поясняет этот метод и для GUI версииWinRAR.exe
. Так что чтение документации было бы полезно в вашем случае. - person Mofi   schedule 12.03.2018