«

Dec
27

Obtener archivos modificados dentro de una estructura de carpetas y en un rango de tiempo determinado

Hay ocasiones en las que es necesario saber cuales fueron los archivos que han cambiado en un rango determinado de tiempo (p.e. ayer o esta semana) y esto dentro de una estructura de carpetas. Hacer esto de memoria no es la opción más recomendada ya que seguramente olvidaremos algo.

He aquí un script de Power Shell para sacarnos del apuro:

1
2
3
4
5
6
7
8
9
clear
$dir_to_look="C:\Users\user\path\to\folder"
$backTime=$(Get-Date).AddMinutes(-10)
$extensionesAIncluir = @(".CS",".ASPX")
 
Get-Childitem $dir_to_look -Recurse |
where-object {!($_.psiscontainer)} |
where { $_.LastWriteTime -gt $backTime -and ($extensiones -contains $_.extension.ToUpper()) } |
foreach {  Write-Host "$($_.LastWriteTime) :: $($_.Fullname) "  }
clear
$dir_to_look="C:\Users\user\path\to\folder"
$backTime=$(Get-Date).AddMinutes(-10)
$extensionesAIncluir = @(".CS",".ASPX")

Get-Childitem $dir_to_look -Recurse |
where-object {!($_.psiscontainer)} |
where { $_.LastWriteTime -gt $backTime -and ($extensiones -contains $_.extension.ToUpper()) } |
foreach {  Write-Host "$($_.LastWriteTime) :: $($_.Fullname) "  }

 

Parámetros:

$dir_to_look: Ruta física de la carpeta raíz a partir de la cual se hará la búsqueda

$backTime: DateTime del rango de tiempo. Si se observa con atención el rango de tiempo es especificado por un objeto .NET DateTime, lo que permite hacer esta comparación en un rango de inclusive horas, como en el código de ejemplo donde se especifica que queremos los archivos modificados en los últimos 10 minutos.

$extensionesAIncluir: Array con las extensiones de los archivos que nos interesa saber

Leave a Reply