Como posso identificar arquivos no sistema de arquivos do Windows onde a data de modificação é X mais recente que a data de criação?

2

Espero que isso possa ser tratado com alguns truques do PowerShell.

Eu tenho um diretório na minha máquina de trabalho (Windows XP) contendo vários PDFs, alguns dos quais eu anotei e salvei. Gostaria de poder identificar os que anotei usando a seguinte heurística simples: localizar arquivos em que a data de modificação é mais recente que a data de criação. Eu não quero apenas classificar por data modificada, porque muitos PDFs não anotados, mas adicionados recentemente, irão encher a lista.

Além disso, às vezes, imediatamente após o salvamento, eu faço uma edição rápida no arquivo que toca sua data modificada, mas não de maneira significativa. Portanto, se eu conseguisse identificar apenas os arquivos em que a data de modificação é mais de um dia depois da data de criação, eu estaria definido. Alguma idéia para o comando usar, e eu deveria estar fazendo isso em powershell?

    
por Daniel Kessler 23.05.2013 / 20:42

2 respostas

3

Você desejará fazer alguma formatação de sua saída, mas tente isto:

Get-ChildItem F:\Temp\* -recurse -include *.pdf | ForEach-Object { If (($_.LastWritetime - $_.CreationTime).Days -gt 1) { Write-Host $_.Name } }

Substitua "F: \ Temp \" pelo seu próprio caminho.

    
por 23.05.2013 / 21:06
1

Tente algo assim:

ls C:\Path | ?{($_.LastWriteTime - $_.CreationTime).Days -gt 1} |
Select Name,CreationTime,LastWriteTime | Export-CSV .\Annotated.csv

Isso fornecerá uma lista de arquivos em que o último horário de gravação menos o tempo de criação é maior que um dia (qualquer coisa modificada após um dia) e exporta para um CSV no diretório de trabalho.

Você pode adicionar -recursive e -include *.pdf para recursão e filtragem de PDF, respectivamente.

    
por 23.05.2013 / 21:48