YuS_2
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору iNNOKENTIY21 Цитата: Таймер в vm, там с ним работать, стоп/старт/интервал… | Таймер здесь работает как приемник от модели, на событие изменения данных. Т.е. в тиках вместо $true, необходимо добавить проверку события изменения данных... как только True, то следует команда обновления модели, получение данных в $vm и далее передача в интерфейс. Вроде укладывается в схему... Цитата: а в форме кнопочки/галочки, только не спрашивай как | В форме кнопочки, галочки и прочее (события UI) - запросто. В чем проблема-то? Если строго по схеме, оно так и должно быть. У формы вообще много обработчиков событий: Код: $window|gm add* -m method -force | и у каждого элемента тоже... Цитата: Я не могу там прочитать код. Буквы - переменные и экономия пробелов, пока расшифрую, быстрее переписать будет или подождать готовое. | да чего там расшифровывать: Две функции. Одна разбирает $item на запчасти (если путь к корневому каталогу - создает коллекцию объектов-файлов из каталога, если путь к файлу - создает объект-файл). Код: Можно создать выборку каталогов с абсолютными путями и подавать функции на вход. Код: dir $path -dir -rec|%{testpth $_.fullname}|%{info $_ 27} | Вторая - непосредственно, получение данных в цикле (цикл можно вообще исключить, заменив получением единственного свойства) и создание кастомных объектов с уникальными ID файла и с привязанными к ID файла ID параметров Вызов со счетчиком, на получение коллекции свойств: Код: testpth $item|%{$n=1}{info $_ $n;$n++} | - на выходе testpth, может быть и коллекция и единственный файл. Вызов на получение конкретного свойства: чуть выше код уже есть с таким вызовом... Далее свойства просто группируются и выводятся в отдельные текстовые файлы. Цитата: Ну, чтобы ошибки не сыпались, при наличии подкаталогов, необходимо в функции указать для Get-ChildItem, что выбирать надо только файлы (см. ниже). А для подсчета общей продолжительности, предварительно формировать коллекцию каталогов, т.е. рекурсивно выбрать все каталоги и с полным путем подавать на вход функции, по одному... в конце просуммировать Duration, т.е. внутри функции совсем необязательно считать, если не требуется отдельно продолжительность по каждому каталогу. farag Цитата: Видимо, потому, что формируется коллекция кастомных объектов и именно она попадает в вывод функции, а переменная игнорируется, т.к. тип объекта другой - надо разбирать как работают функции вообще... write-host просто выводит значение непосредственно в консоль, минуя автовывод функции. Цитата: Заметил, что обязательно нужны кавычки вокруг переменной? | Нет, в данном случае кавычки необязательны, вклеил их на автопилоте Вообще, можно ещё так обойти этот момент: Код: Function Get-Duration { param ($TargetFolder) $shell = New-Object -ComObject Shell.Application $script:TotalDuration = [timespan]0 Get-ChildItem -Path $TargetFolder -file | ForEach-Object -Process { $Folder = $shell.Namespace($_.DirectoryName) $File = $Folder.ParseName($_.Name) $Duration = [timespan]$Folder.GetDetailsOf($File, 27) $script:TotalDuration += $Duration [PSCustomObject] @{ File = $_.Name Duration = $Duration } } } (Get-Duration D:\Загрузки\111 | Sort-Object Duration | Out-String).Trim() $TotalDuration |
| Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 01:16 15-09-2019 | Исправлено: YuS_2, 01:28 15-09-2019 |
|