есть ли способ перечислить файлы на основе даты последнего доступа к записи?

#powershell

Вопрос:

мой первый подход был: gci -File | ? {$_.LastWriteTime -eq "3/25/2021"} но это ничего не возвращает

и наоборот, с -gt -lt операторами и, похоже, это работает

 gci | ? {$_.LastWriteTime -gt "3/24/2021" -and $_.LastWriteTime -lt "3/26/2021"}

    Directory: C:logs

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           24/3/2021  7:42 PM        1048804 fdm.1
-a---           24/3/2021  7:45 AM        1048617 hostd-probe.1
-a---           25/3/2021 10:27 AM          24246 usb.log
 

Я ищу список файлов на определенную LastWriteAccess дату. Я не использовал .addDays() метод, потому что я буду периодически проверять одни и те же файлы в определенные даты, поэтому было бы удобнее использовать статическую дату вместо изменения .addDays() значения

Комментарии:

1. Добро пожаловать @mich_a! Могу ли я предложить избегать псевдонима при отправке вопросов? Хотя псевдонимы являются хорошим ярлыком, они, как правило, затрудняют чтение и отладку. Что касается вашего вопроса, проблема заключается в том, что вы используете «3/26/2021», который является строкой в PowerShell. Вы должны использовать (get-дата 3/23/2021), который возвращает объект даты и времени.

Ответ №1:

LastWriteTime это конкретная дата и время. Вы сравниваете равенство только с датой, поэтому вам нужно ссылаться на это свойство

 gci -File | ? {$_.LastWriteTime.date -eq "3/25/2021"}
 

Кроме того, если это сценарий, который будет использоваться другими или в производстве, лучше не использовать псевдонимы.

 Get-ChildItem -File |
    Where-Object {$_.LastWriteTime.date -eq "3/25/2021"}
 

Комментарии:

1. спасибо @Doug Mauer. Такое чувство, что это было прямо у меня под носом.:)

2. @mich_a Вы также можете рассмотреть возможность принятия этого в качестве ответа, нажав на галочку. Таким образом, другие читатели смогут легко найти решение.