Powershell:
gci C:\Reports\*\* | where {$_.LastWriteTime -gt ((get-date)- (new-timespan -day 7))} | select FullName,LastWriteTime | ft
Разбив немного:
gci
(aka get-childitem
) делает то, на что это похоже, обрабатывает предоставленный путь к файловой системе как объект и извлекает из него дочерние элементы (файлы или папки).
Это передается в where
оператор, который имеет единственную функцию фильтра в качестве аргумента.
Функция фильтра представляет собой «простое» сравнение, в данном случае = «Истина, если A больше, чем B». Первая часть этого - $_.LastWriteTime
это получение каждого объекта, переданного из канала, и извлечение свойства LastWriteTime. Последняя часть этого - относительная конструкция даты; нет ничего супер простого в PS. Первая часть даты получает текущую дату, затем вычитает количество времени из этого числа (в этом примере я создаю новый объект даты, который содержит значение 7 дней; так что теперь минус 7 дней даст дату 7 дней назад).
Из тех объектов, которые прошли через where
фильтрацию, я извлекаю только свойства FullName и LastWriteTime, так как это все, что нас волнует.
В конце концов, он передается команде format-table
(aka ft
), так что получается такая таблица:
FullName LastWriteTime -------- ------------- C:\Reports\Task1\Report1 7/11/2011 10:00:00 AM C:\Reports\Task2\Report1 7/10/2011 5:00:00 AM C:\Reports\Task2\Report2 7/6/2011 9:00:00 PM C:\Reports\Task4\Report7 7/4/2011 3:00:00 PM
Чтобы получить только счет всего этого, заключите указанную выше команду следующим образом: (mess_from_above_less_the_ft_part).count
(Необходимо снять часть «| ft», или она добавит 4 строки форматирования таблицы, которые будут подсчитаны и сбросят ваш счет на 4.