Batch : Suppression de DOSSIER plus vieux

Fermé
Eizekiel - 1 janv. 2023 à 15:03
brucine Messages postés 14466 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 6 mai 2024 - 3 janv. 2023 à 14:54

Bien le bonjour !

Je viens vers vous car je souhaite connaitre le script à mettre dans un fichier batch afin de supprimer tout dossier vieux de plus de 30 jours sur mon ordinateur.
Attention, j'ai bien fouillé google pendant je ne sais combien de temps afin de trouver ce miracle mais je n'ai trouvé que des batch concernant la suppression de fichier et non pas dossier.

J'ai déjà un cleaner de fichier Temp en batch et j'en suis satisfait, là je veux virer en mode hard tout les dossiers trop vieux et inutile avec leurs contenue =)

Merci par avance.

A voir également:

1 réponse

dubcek Messages postés 18719 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 mai 2024 5 615
3 janv. 2023 à 12:02
0
brucine Messages postés 14466 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 6 mai 2024 1 849
3 janv. 2023 à 14:54

Bonjour,

Le comportement tant de FORFILES qu'en alternative de ROBOCOPY est trompeur: supposons que j'ai sur le bureau un dossier date de création 20/10/2022 qui sera celle prise en compte et pas modifiée par un sous-dossier daté 06/11/2022 que j'y ai ajouté ne contenant que des fichiers de plus de 3 mois et plusieurs fichiers à la racine dont tous sauf un datent de plus de un mois.

La syntaxe:
 

for /f "delims=" %%A in ('FORFILES /S /C "cmd /c if @isdir==TRUE echo @path @fdate" /D -30') do (
	set "fichier=%%A"
	echo !fichier!
)

échoue parce qu'elle me sélectionne bien le sous-dossier ancien mais, puisqu'elle ne s'adresse qu'aux dossiers (@isdir==TRUE), ne me retourne pas les fichiers anciens à la racine.

Dans les mêmes conditions, une syntaxe ROBOCOPY que je peux affiner pour supprimer les parasites écran, mais peu importe, sélectionne le dossier parent et le sous-dossier, et donc me vire tout y compris le fichier "récent":
 

robocopy "%folder%" "%folder%" *.* /minage:30 /L /s

La moralité est qu'il inefficace ou dangereux dans tous les cas de vouloir par une syntaxe simple virer tous les dossiers "anciens"

Il me paraît plus sain (c'est sans problème via FORFILES ou ROBOCOPY) de lister non pas les dossiers mais tous les fichiers antérieurs à cette date et de les supprimer, puis de tester si les dossiers restants sont vides.

Il existe plusieurs syntaxes plus ou moins capillotractées, la plus simple consiste à déplacer via ROBOCOPY le dossier sur lui-même:

ROBOCOPY "Mondossier" "Mondossier" /S /MOVE

0