|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Добавить прогресс бар к скрипту скачивания файлов из интернета |
|
PowerShell - Добавить прогресс бар к скрипту скачивания файлов из интернета
|
Старожил Сообщения: 227 |
Добрый день всем!
Написал коротенький скрипт для скачивания плейлистов: foreach($line in Get-Content downl.txt) { if($line ){ $webclient = New-Object System.Net.WebClient $webclient.Encoding = [System.Text.Encoding]::UTF8 $webclient.DownloadString($line) | Out-File .\out\out.m3u -Append } } Хотелось бы добавить к скрипту прогресс бар, заполняющийся по мере скачивания плейлистов. Нашел код неплохого прогресс бара с GUI: $Path = "F:\zagruz" ## --- Put Folder-Path Here If (Test-Path $Path) { Write-Host Write-Host "Listing All Files Found In $Path" -ForegroundColor "Yellow" Write-Host "=========================================" -ForegroundColor "Yellow" Add-Type -assembly System.Windows.Forms ## -- Create The Progress-Bar $ObjForm = New-Object System.Windows.Forms.Form $ObjForm.Text = "Demonstration of Progress-Bar In PowerShell" $ObjForm.Height = 100 $ObjForm.Width = 500 $ObjForm.BackColor = "White" $ObjForm.FormBorderStyle = [System.Windows.Forms.FormBorderStyle]::FixedSingle $ObjForm.StartPosition = [System.Windows.Forms.FormStartPosition]::CenterScreen ## -- Create The Label $ObjLabel = New-Object System.Windows.Forms.Label $ObjLabel.Text = "Starting. Please wait ... " $ObjLabel.Left = 5 $ObjLabel.Top = 10 $ObjLabel.Width = 500 - 20 $ObjLabel.Height = 15 $ObjLabel.Font = "Tahoma" ## -- Add the label to the Form $ObjForm.Controls.Add($ObjLabel) $PB = New-Object System.Windows.Forms.ProgressBar $PB.Name = "PowerShellProgressBar" $PB.Value = 0 $PB.Style="Continuous" $System_Drawing_Size = New-Object System.Drawing.Size $System_Drawing_Size.Width = 500 - 40 $System_Drawing_Size.Height = 20 $PB.Size = $System_Drawing_Size $PB.Left = 5 $PB.Top = 40 $ObjForm.Controls.Add($PB) ## -- Show the Progress-Bar and Start The PowerShell Script $ObjForm.Show() | Out-Null $ObjForm.Focus() | Out-NUll $ObjLabel.Text = "Starting. Please wait ... " $ObjForm.Refresh() Start-Sleep -Seconds 1 ## -- Execute The PowerShell Code and Update the Status of the Progress-Bar $Result = Get-ChildItem -Path $Path -File -Recurse -Force | Select Name, @{Name="Path";Expression={$_.FullName}} $Counter = 0 ForEach ($Item In $Result) { ## -- Calculate The Percentage Completed $Counter++ [Int]$Percentage = ($Counter/$Result.Count)*100 $PB.Value = $Percentage $ObjLabel.Text = "Recursive Search: Writing Names of All Files Found Inside $Path" $ObjForm.Refresh() Start-Sleep -Milliseconds 150 # -- $Item.Name "`t" + $Item.Path } $ObjForm.Close() Write-Host "`n" } Else { Write-Host Write-Host "`t Cannot Execute The Script." -ForegroundColor "Yellow" Write-Host "`t $Path Does Not Exist in the System." -ForegroundColor "Yellow" Write-Host } Ткните носом, пожалуйста, какие переменные указать в этом скрипте, чтобы он контролировал процесс выполнения моего скрипта. |
|
Отправлено: 19:58, 30-06-2019 |
Забанен Сообщения: 793
|
Зачем в цикле плодить экземпляры объекта WebClient? Во-вторых, непонятно у вас WinForm сценарий или все должно выводиться в хост? Для последнего предусмотрен командлет Write-Progress, в первом случае - все зависит от того, как именно должен вестись полсчет: скопом для всех файлов или же в отдельности для каждого (хотя в обоих случаях нужно взять размер файла из ответа запроса и относительно него вести расчет процента состояния загрузки).
|
Отправлено: 12:22, 01-07-2019 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать Цитата Uragan66:
2) Замените вызов штатного прогресс-бара на $PB.Value = $Percentage $ObjLabel.Text = "Recursive Search: Writing Names of All Files Found Inside $Path" $ObjForm.Refresh() Цитата greg zakharov:
|
||
Отправлено: 12:27, 01-07-2019 | #3 |
Старожил Сообщения: 227
|
Профиль | Отправить PM | Цитировать Цитата greg zakharov:
Цитата greg zakharov:
Цитата greg zakharov:
Я его только немного подправил для своей задачи (продолжение кода): $soft = 'nhrt.exe' Start-Process -FilePath $soft -ArgumentList '-list:cleaning.txt .\out\out.m3u' -NoNewWindow -Wait @(for($i, $arr = 0, (gc .\out\out.m3u -Encoding utf8); $i -lt $arr.Length;) { $a, $b = $arr[$i], $arr[$i + 1] # потенциальная пара # критерий относительно которого формируется пара if ($a.StartsWith('#EXTINF') -and $b -match ':\/\/') { # выводим пару в окно хоста "$a`n$b" # переходим на две позиции вперед $i += 2 } else { # в противном случае переходим к следующему значению ++$i continue } }) | Sort-Object -Unique | Out-File .\out\plist_google.m3u -Encoding utf8 Start-Process -FilePath $soft -ArgumentList '-list:replzag.txt .\out\plist_google.m3u' -NoNewWindow -Wait Цитата Busla:
|
||||
Отправлено: 13:11, 01-07-2019 | #4 |
(*.*) Сообщения: 36567
|
Профиль | Сайт | Отправить PM | Цитировать А производительность тестировали? А то бывает и так https://twitter.com/sterkin_ru/statu...82187162152961
|
|
Отправлено: 14:46, 01-07-2019 | #5 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать Vadikan, честно говоря, из твита непонятно: как бывает, и при чём здесь wget неизвестного происхождения.
|
Отправлено: 14:57, 01-07-2019 | #6 |
(*.*) Сообщения: 36567
|
Профиль | Сайт | Отправить PM | Цитировать Busla, там invoke-webrequest, а wget - его псевдоним.
|
Отправлено: 18:01, 01-07-2019 | #7 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
PowerShell - Добавить прогресс бар в готовый скрипт | c4uran | Скриптовые языки администрирования Windows | 11 | 26-10-2018 20:16 | |
CMD/BAT - Помогите прикрутить прогресс бар к скрипту | Виктор_Падий@vk | Скриптовые языки администрирования Windows | 4 | 13-11-2016 14:44 | |
Программа для скачивания видео файлов из интернета | Baber | Хочу все знать | 11 | 11-01-2015 00:02 | |
Прочее - Проблема со скоростью скачивания файлов из интернета | doc11111 | Сетевые технологии | 0 | 27-09-2013 12:34 | |
Добавить прогресс бар к скрипту | support23 | AutoIt | 1 | 25-11-2012 06:53 |
|