Bonjour,
J'essaie de mettre en place un script qui supprime les fichiers vieux de plus de 15 jours. Après quelques recherches sur Internet, j'aboutis à ceci :
Mon principal souci est que ce programme supprime, après demande de confirmation, l'intégralité d'un dossier de plus de 15 jours, même si les fichiers contenus dans le dossier sont plus récents. Comment obtenir le comportement que j'attends, càd ne supprimer que les dossiers vieux de plus de 15 jours dont le contenu est vieux de plus de 15 jours ?$Now = Get-Date
$Days = "15"
#----- En réalité, il faudrait monter le bon dossier. ----#
#----- L'énumération ne semble pas la meilleure solution. ----#
$TargetFolders = @("D:\GA\test\emission", "D:\GA\test\reception")
$LastWrite = $Now.AddDays(-$Days);
foreach($TargetFolder in $TargetFolders)
{
$Files = Get-Childitem $TargetFolder -Recurse | Where {$_.LastWriteTime -le "$LastWrite"}
foreach ($File in $Files)
{
if ($File -ne $NULL)
{
write-host "Deleting File $File" -ForegroundColor "DarkRed"
Remove-Item $File.FullName | out-null
#--- Ceci n'est pas le comportement attendu. ---#
}
else
{
Write-Host "No more files to delete!" -foregroundcolor "Green"
}
}
}
#----- On redirigera la sortie dans une log. ----#
Mon second souci est que j'aimerais lancer ce processus sur tous les dossiers du type D:\GA\xxx\emission et D:\GA\xxx\reception où xxx peut prendre toute valeur. A part énumérer comme je l'ai fait, peut-on lancer le script sur D:\GA et adapter le comportement selon la "hauteur" du dossier dans l'arborescence ?
Merci,
Samuel
Partager