Powershell:
gci C:\Reports\*\* | where {$_.LastWriteTime -gt ((get-date)- (new-timespan -day 7))} | select FullName,LastWriteTime | ft
Quebrando um pouco:
gci
(também conhecido como get-childitem
) faz o que parece, trata o caminho do sistema de arquivos fornecido como um objeto e extrai os itens filhos (arquivos ou pastas) dele.
Isso é canalizado para a instrução where
, que tem uma única função de filtro como argumento.
A função de filtro é uma comparação 'simples', neste caso {A -gt B}="Verdadeiro se A for Maior que B". A primeira parte disso é $_.LastWriteTime
, que recebe cada objeto passado do pipe e retira a propriedade LastWriteTime. A última parte disso é uma construção de data relativa; nada é super simples no PS. A primeira parte da data date recebe a data atual, então ela subtrai uma quantidade de tempo daquele número (neste exemplo estou criando um novo objeto de data que contém o valor de 7 dias; então agora menos 7 dias daria a data 7 dias atrás).
A partir desses objetos que passaram pela filtragem where
, estou retirando apenas as propriedades FullName e LastWriteTime, já que é tudo o que nos interessa.
Finall é canalizado para o comando format-table
(aka ft
), por isso cria uma tabela bonita como esta:
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
Para obter apenas a contagem de tudo isso, coloque o comando acima assim: (mess_from_above_less_the_ft_part).count
(Tem que tirar a parte "| ft" ou adicionar 4 linhas de formatação de tabela que são contadas e descartarão sua contagem por 4.