Имя пользователя:
Пароль:
 

Название темы: Запуск FFprobe на Powershell
Показать сообщение отдельно

Старожил


Сообщения: 232
Благодарности: 21

Профиль | Отправить PM | Цитировать


Добрый день всем!
Цитата DJ Mogarych:
Можно сделать 4 задачи в стандартном планировщике задач. »
DJ Mogarych, ну это немного не то, не каждый умеет использовать планировщик, а скрипт планируется для нескольких пользователей, да и не совсем удобно это...
Нашел интересный скрипт многопоточного запуска пинга - https://xaegr.wordpress.com/2011/07/12/threadping/
Попробовал его переделать под свою задачу:
Код: Выделить весь код
Param (
[string[]]$unc = 'http://109.248.67.1:4044',
[string[]]$prt = ':1234',           
[string[]]$Address = $(1..20 | %{"$unc/udp/239.195.1.$_$prt"}),            
[int]$Threads = 3            
)            
            
write-host "Distributing addresses around jobs"            
$JobAddresses = @{}            
$CurJob = 0            
$CurAddress = 0            
while ($CurAddress -lt $Address.count)            
{            
    $JobAddresses[$CurJob] += @($Address[$CurAddress])            
    $CurAddress++            
    if ($CurJob -eq $Threads -1)            
    {            
        $CurJob = 0            
    }            
    else            
    {            
        $CurJob++            
    }            
}            
            
$Jobs = @()            
foreach ($n in 0 .. ($Threads-1))            
{            
    Write-host "Starting job $n, for addresses $($JobAddresses[$n])"            
    $Jobs += Start-Job -ArgumentList "ffprobe.exe -timeout 6000000 -hide_banner -select_streams v:1 -print_format json=compact=1 -show_entries format=filename -show_programs -show_entries program=service_name -of default=noprint_wrappers=1:nokey=0 $JobAddresses[$n] >>out.json" -ScriptBlock {
cmd /c
}            
}            
            
write-host "Waiting for jobs"            
$ReceivedJobs = 0            
while ($ReceivedJobs -le $Jobs.Count)            
{            
    foreach ($CompletedJob in ($Jobs | where {$_.State -eq "Completed"}))            
    {            
        Receive-Job $CompletedJob | select status, address, roundtriptime            
        $ReceivedJobs ++            
        sleep 1            
    }            
}            
            
Remove-Job $Jobs            
write-host "Done."
Но последний блок кода (вывод) никак не получается... Да и ffprobe не знаю как точно запустить с помощью Start-Job
Может кто сможет помочь с этим скриптом, буду очень благодарен.

Последний раз редактировалось Uragan66, 08-12-2019 в 16:46.


Отправлено: 12:48, 08-12-2019 | #7

Название темы: Запуск FFprobe на Powershell