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 .ps1extension. 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-ExecutionPolicypour 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 FileSystemparamè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-PSDriveet 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 $Recyclecomme 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 -Forceparamètre est nécessaire pour aller dans les dossiers cachés et système, et le -Recurseparamètre rend la commande récursive, c'est-à-dire. parcourir également tous les sous-répertoires. -ErrorActionest un paramètre standard pour la plupart des commandes PowerShell, et la valeur SilentlyContinuefait 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 LastWriteTimepropriété dans ce cas fait référence à la date et à l'heure auxquelles le fichier a été supprimé. Get-Daterenvoie la date actuelle.
Pour plus d'informations, voir Get-Help Where-Objectet 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 -Recurseparamè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.