![]() |
Поиск файлов (дата изменения с начала предыдущих суток)
Добрый день. Делается поиск файлов в указанном каталоге, включая вложенные папки с фильтром расширения.
Нужно найти все файлы, измененные вчера. Однако если сейчас 12-00, и файл изменен вчера в 9-00 - в результат поиска он не попадает (что логично) Если сделать adddays(-2) - туда попадут файлы в т.ч. с позавчера.. Код:
Get-ChildItem "C:\fb\log\*" -include *.txt -Recurse | where-object {$_.LastWriteTime -ge ((Get-Date).adddays(-1))} |
Код:
PS C:\WINDOWS\system32> (Get-Date).AddDays(-1) |
Код:
((Get-Date)::today).adddays(-1) |
Правильнее было бы использовать
Код:
(Get-Date).date.AddDays(-1) Код:
[datetime]::today.AddDays(-1) |
YuS_2, Busla, Спасибо. все гениальное- просто!
Цитата:
|
скорее не правильнее, а привычнее... а правильность - понятие относительное. :)
|
Цитата:
Код:
PS C:\> Get-Date Код:
PS C:\> (Get-Date).Date И посему «вчера» (.AddDays(-1)) в вышеприведённых коллегой Busla кодах будет означать «сутки назад, считая от нуля часов нуля минут сегодняшнего числа». |
Цитата:
в случае Код:
((Get-Date)::today).adddays(-1) командлет Get-Date обращается к конструктору класса datetime получает объект с текущим моментом времени получает из объекта ссылку на родительский класс - всё тот же datetime выкидывает объект обращается к специализированному конструктору класса datetime получает объект с моментом начала суток вычитает один день код Код:
[datetime]::today.AddDays(-1) получает объект с моментом начала суток вычитает один день понятно, что если постоянно использовать подобные окольные пути, программы будут работать дольше и памяти требовать больше вариант Код:
(Get-Date).date.AddDays(-1) т.е. это "чистая функция" которая не использует side-эффекты - код с ней проще отлаживать, изменять, переиспользовать |
Цитата:
Но на практике, первичное обращение: Код:
measure-command{((Get-Date)::today).adddays(-1)} Код:
measure-command{[datetime]::today.AddDays(-1)} |
YuS_2, более 20% разницы в производительности... очень даже имеет.
Если такой командлет будет вызываться 20 раз в функции, которая будет вызываться 50 раз в скрипте - получится значительная задержка, которой могло бы и не быть. Что уж говорить если такую функцию воткнут в foreach |
Charg, тому, кто втыкает такие вычисления внутрь цикла (или «20 раз по 50 раз»), надо переучиваться (или доучиваться).
|
Charg,
Цитата:
У меня это получалось на различных компьютерах и именно при первичном обращении (если что, то проверялось в различной последовательности запуска). На самом деле, эта разница, скорее всего, получается из-за статистической ошибки, на которую могут влиять многие факторы в ОС. Чтобы получить более достоверные варианты, надо просто запустить многократные тесты... но в виду того, что различие-то незначительное, особенно, при повторном обращении, сам я этого делать не стал... Цитата:
Всё, понял про что речь... |
Iska, с чего бы вдруг? Ну вот написал кто-нибудь модуль в функцией Do-UsefulStuff, ты его скачал и используешь. Как можно понять "хорошо" модуль написан или "плохо"? Лазить изучать исходники каждого качаемого модуля перед использованием?
|
Всем большое спасибо за дискуссию. Полезно
|
Время: 16:00. |
Время: 16:00.
© OSzone.net 2001-