|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Совместить секундомер и прогресс бар |
|
||||
|
|
PowerShell - Совместить секундомер и прогресс бар
|
|
Старожил Сообщения: 232 |
Доброго времени суток всем!
Некоторые скрипты работают довольно длительное время. Чтобы как-то контролировать процесс, можно было бы добавлять прогресс бар. Но универсального решения нет и нужно в каждом скрипте мозговать другой код для добавления прогресс бара. Есть простой секундомер для контроля времени работы скрипта: Возможно ли совместить его с прогресс баром? То есть скрипт запустился, секундомер начал отсчитывать время и пошла полоска прогресс бара. Может можно как-то данные для прогресс бара брать с этого секундомера? |
|
|
Отправлено: 12:06, 31-10-2020 |
|
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Uragan66, нет. Прогресс-бар имеет смысл, когда известно начальное значение, конечное значение и хоть какие-то реперные точки.
|
|
Отправлено: 14:31, 31-10-2020 | #2 |
|
Ветеран Сообщения: 1758
|
|
|
Отправлено: 14:43, 31-10-2020 | #3 |
|
Старожил Сообщения: 232
|
Профиль | Отправить PM | Цитировать Цитата Foreigner:
Цитата Iska:
|
||
|
Отправлено: 14:53, 31-10-2020 | #4 |
|
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Uragan66:
|
||
|
Отправлено: 15:49, 31-10-2020 | #5 |
|
Старожил Сообщения: 232
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
|
|
Отправлено: 15:59, 31-10-2020 | #6 |
|
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать Uragan66, описанные вами задачи не выглядят сколько-нибудь тяжеловесными, чтобы хотя бы успеть заметить/увидеть прогресс-бар
|
|
Отправлено: 17:03, 31-10-2020 | #7 |
|
Crazy Сообщения: 1234
|
Профиль | Отправить PM | Цитировать Цитата Uragan66:
Цитата Busla:
|
||
|
------- Отправлено: 17:23, 31-10-2020 | #8 |
|
Старожил Сообщения: 232
|
Профиль | Отправить PM | Цитировать Цитата Busla:
Но вопрос то даже не в том, можно заметить движение прогресс бара или нет. Если в скрипте есть циклы, то можно прогресс бар добавить, но опять таки он будет работать не всё время выполнения скрипта... Да и для каждого скрипта нужно свой прогресс бар мудрить. Поэтому и подумал о секундомере, чтобы с него как-то брать данные для прогресс бара и это было бы универсальным решением для любого скрипта. Цитата YuS_2:
Есть такой скрипт: Add-Type -AssemblyName PresentationCore,PresentationFramework
[xml]$xaml = @"
<Window Name="main"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="250.456" Width="223.212">
<Grid Margin="0,0,2,0">
<Label HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" RenderTransformOrigin="-1.028,-1.353" Width="186" Height="38">
<Grid Height="38" Margin="0,0,0,0" Width="176">
<TextBlock HorizontalAlignment="Left" TextWrapping="Wrap" Text="Запуск скрипта" VerticalAlignment="Top" Height="28" Width="97" FontSize="18" FontFamily="Segoe Script" Margin="10,0,0,0"/>
<TextBlock Name="Count" Text="" HorizontalAlignment="Right" TextWrapping="Wrap" VerticalAlignment="Top" Height="28" Width="48" FontSize="18" FontFamily="Segoe Script"/>
</Grid>
</Label>
<Button Name="inc" Content="Запустить скрипт" HorizontalAlignment="Left" Margin="10,53,0,0" VerticalAlignment="Top" Width="180" Height="45">
</Button>
<ProgressBar Minimum="0" Maximum="100" Margin="10,93,0,0" HorizontalAlignment="Left" Width="180" Height="45" Name="pbStatus" />
</Grid>
</Window>
"@
$reader=(New-Object System.Xml.XmlNodeReader $xaml)
$Window=[Windows.Markup.XamlReader]::Load( $reader )
$xaml.SelectNodes("//*[@*[contains(translate(name(.),'n','N'),'Name')]]") | %{
Set-Variable -Name ($_.Name) -Value $Window.FindName($_.Name) -Scope Global
}
$inc.add_click({
$pbStatus.isIndeterminate=$true
$runspace = [runspacefactory]::CreateRunspace()
$runspace.Open()
$runspace.SessionStateProxy.SetVariable('pbStatus',$pbStatus)
$powershell = [powershell]::Create()
$powershell.Runspace = $runspace
$powershell.AddScript({
Здесь любой скрипт
$pbStatus.Dispatcher.invoke([action]{$pbStatus.isIndeterminate=$false})
$pbStatus.Dispatcher.invoke([action]{$pbStatus.value=100})
})
$powershell.BeginInvoke()
})
$Window.showdialog()
Работает с любым скриптом... Но неудобно с него запускать скрипты, лишнее окно и т.д. Да и сам прогресс бар просто движется непрерывно. |
||
|
Отправлено: 19:36, 31-10-2020 | #9 |
|
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Тогда можно. Сначала считаем общее число каналов, это будет конечной точкой. Затем, в процессе поиска дубликатов/сканирования потоков на валидность/прочая, выводим текущее значение для прогресс-бара.
Цитата Uragan66:
|
|
|
Отправлено: 20:52, 31-10-2020 | #10 |
|
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| PowerShell - Добавить прогресс бар в готовый скрипт | c4uran | Скриптовые языки администрирования Windows | 11 | 26-10-2018 20:16 | |
| Добавить прогресс бар к скрипту | support23 | AutoIt | 1 | 25-11-2012 06:53 | |
| [решено] Прогресс-бар для скрипта | Tosyk | AutoIt | 10 | 23-09-2012 11:04 | |
| VBS/WSH/JS - [решено] Прогресс бар для vbscript | neo21 | Скриптовые языки администрирования Windows | 2 | 27-10-2011 13:31 | |
| [решено] Прогресс бар | semiono | AutoIt | 17 | 24-03-2009 23:18 | |
|