Je ne connais aucun module complémentaire Explorer, mais comme la plupart des choses dans Windows, cela peut être fait avec PowerShell:
ForEach ($Drive in Get-PSDrive -PSProvider FileSystem) {
$Path = $Drive.Name + ':\$Recycle.Bin'
Get-ChildItem $Path -Force -Recurse -ErrorAction SilentlyContinue |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) } |
Remove-Item -Recurse
}
Enregistrez ce script sous forme de fichier texte avec une .ps1
extension. Vous pouvez ensuite utiliser le Planificateur de tâches pour l'exécuter à intervalles réguliers.
Tout d'abord, cependant, vous devez autoriser l'exécution des scripts PowerShell, car par défaut, vous ne pouvez exécuter que des commandes saisies directement dans l'invite PowerShell. Pour ce faire, ouvrez PowerShell et tapez la commande suivante:
Set-ExecutionPolicy RemoteSigned
Tapez "y" ou "oui" lorsque vous y êtes invité. Voir Get-Help Set-ExecutionPolicy
pour plus d'informations.
Ouvrez maintenant le Planificateur de tâches et créez une nouvelle tâche avec les paramètres suivants:
- Sous l'onglet "Général", entrez un nom et cochez l'option "Exécuter avec les privilèges les plus élevés"
- Sous l'onglet "Déclencheurs", ajoutez un nouveau déclencheur et définissez la tâche à exécuter quotidiennement
- Sous l'onglet "Actions", ajoutez une nouvelle action:
- laissez le type "Démarrer un programme"
- définissez le champ "Programme / script" sur
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
- définissez le champ "Ajouter des arguments" sur
-NonInteractive -File "C:\path\to\script.ps1"
- Sous l'onglet "Conditions", décochez "Démarrer la tâche uniquement si l'ordinateur est sur secteur"
Explication ligne par ligne du script:
ForEach ($Drive in Get-PSDrive -PSProvider FileSystem) {
Cela obtient une liste de tous les lecteurs de l'ordinateur et les parcourt en boucle un par un. Le -PSProvider FileSystem
paramètre est requis pour renvoyer uniquement les lecteurs de disque, car PowerShell possède également des pseudodrives pour diverses autres choses comme les ruches de registre.
Pour plus d'informations, consultez Get-Help Get-PSDrive
et ce didacticiel sur le traitement des boucles dans PowerShell .
$Path = $Drive.Name + ':\$Recycle.Bin'
Cela crée le chemin d'accès au dossier de la corbeille sur le lecteur actuel. Notez l'utilisation de guillemets simples autour de la deuxième partie, pour empêcher PowerShell d'interpréter $Recycle
comme une variable.
Get-ChildItem $Path -Force -Recurse -ErrorAction SilentlyContinue |
Cela renvoie tous les fichiers et sous-dossiers sous le chemin donné (celui que nous avons construit avec la commande précédente). Le -Force
paramètre est nécessaire pour aller dans les dossiers cachés et système, et le -Recurse
paramètre rend la commande récursive, c'est-à-dire. parcourir également tous les sous-répertoires. -ErrorAction
est un paramètre standard pour la plupart des commandes PowerShell, et la valeur SilentlyContinue
fait que la commande ignore les erreurs. Le but de ceci est d'éviter les erreurs pour les lecteurs qui ont été configurés pour supprimer immédiatement les fichiers. Le |
symbole à la toute fin dirige les résultats vers la commande suivante; Je l'ai divisé en plusieurs lignes pour une meilleure lisibilité.
Pour plus d'informations, voir Get-Help Get-ChildItem
.
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) } |
Cela filtre simplement les résultats de la commande précédente et renvoie uniquement ceux qui datent de plus de 30 jours. $_
fait référence à l'objet en cours de traitement, et la LastWriteTime
propriété dans ce cas fait référence à la date et à l'heure auxquelles le fichier a été supprimé. Get-Date
renvoie la date actuelle.
Pour plus d'informations, voir Get-Help Where-Object
et Get-Help Get-Date
.
Remove-Item -Recurse
Cela supprime simplement les éléments qui lui ont été transmis par la commande précédente. Le -Recurse
paramètre supprime automatiquement le contenu des sous-dossiers non vides; sans elle, vous seriez invité à indiquer de tels dossiers.
Pour plus d'informations, voir Get-Help Remove-Item
.