2016-09-16 1 views
0

У меня есть файл в папке с следующими LastWriteTime собственностью:GCI с LastWriteTime не возвращает правильный файл-объект

LastWriteTime 
------------- 
08.09.2016 07:46:18 

Почему любой из этих команд не возвращает объект File?

gci . | ? {$_.LastWriteTime -like '*08.09.2016*'} 

gci . | ? {$_.LastWriteTime -eq '08.09.2016'} 

gci . | ? {$_.LastWriteTime -eq '08.09.2016 07:46:18'} 

Моя задача состоит в том, чтобы получить все файлы, которые были созданы на 08.09.2016 в папку рекурсивно, и я знаю, как сделать это, но мой LastWriteTime сравнить не хочет работать. Зачем?

ответ

2

Ваша проблема в том, что $_.LastWriteTime имеет тип DateTime, и вы сравниваете его со строкой. Вам нужно создать DateTime объект самостоятельно, как:

[datetime]::ParseExact("31/12/1900", "dd/MM/yyyy", $null) 

Вы также можете преобразовать $_.LastWriteTime в строку, как:

$_.LastWriteTime.ToShortTimeString() 

, но имейте в виду, что результаты будут отличаться на компьютерах с различными культуры. Вариант 1 - путь. Полный пример выглядит следующим образом:

gci . | ? {$_.LastWriteTime.Date -eq [datetime]::ParseExact("08/09/2016", "dd/MM/yyyy", $null)} 
+0

безупречный, спасибо! – SimonS

Смежные вопросы