Fichier par lots pour supprimer les dossiers de plus de 10 jours dans Windows 7

StackOverflow https://stackoverflow.com/questions/5497211

  •  14-11-2019
  •  | 
  •  

Question

Je souhaite créer un fichier batch qui devrait supprimer tous les sous-dossiers d'un dossier de plus de 10 jours, en utilisant Windows 7

Toute aide serait appréciée.

Pas de solution correcte

Autres conseils

Adapté de Cette réponse à une question très similaire:

FORFILES /S /D -10 /C "cmd /c IF @isdir == TRUE rd /S /Q @path"

Vous devez exécuter cette commande à partir de votre d:\study dossier. Il supprimera tous les sous-dossiers de plus de 10 jours.

La /S /Q après le rd Le fait supprimer les dossiers même s'ils ne sont pas vides, sans inciter.

Je vous suggère de mettre la commande ci-dessus dans un fichier .bat et de l'enregistrer en tant que d:\study\cleanup.bat.

Forfiles / s / d -10 / c "cmd / c si @isdir == true rd / s / q @path"

Je n'ai pas pu obtenir la suggestion de Blorgbeard pour travailler, mais j'ai pu le faire fonctionner avec RMDIR au lieu de RD:

Forfiles / p n: test / s / d -10 / c "cmd / c if @isdir == true rmdir / s / q @path"

Étant donné que RMDIR ne supprime pas les dossiers qui ne sont pas vides, j'ai également fini par utiliser ce code pour supprimer les fichiers qui ont eu plus de 10 jours, puis les dossiers âgés de plus de 10 jours.

Pour / d %% k in ("n: test *") do (

Pour / d %% J dans ("%% k *") do (

Forfiles / P %% J / S / M . / D -10 / c "cmd / c del @file"

)

)

Forfiles / p n: test / s / d -10 / c "cmd / c if @isdir == true rmdir / s / q @path"

J'ai utilisé ce code pour purger les sous-dossiers dans les dossiers du test (l'exemple n: test ABC 123 serait purgé lorsqu'il serait vide, mais n: test ABC ne serait pas purgé

Si vous souhaitez l'utiliser avec le paramètre (c.-à-d. Supprimer tous les sous-noms sous le répertoire donné), mettez ces deux lignes dans un fichier * .bat ou * .cmd:

@echo off
for /f "delims=" %%d in ('dir %1 /s /b /ad ^| sort /r') do rd "%%d" 2>nul && echo rmdir %%d

et ajouter du chemin de script à votre variable d'environnement de chemin. Dans ce cas, vous pouvez appeler votre fichier batch à partir de n'importe quel emplacement (je suppose que le chemin UNC devrait également fonctionner).

Par exemple.:

YourBatchFileName c:\temp

(vous pouvez utiliser des guillemets si nécessaire)

Supprimera tous les sous-noms vides dans le dossier C: Temp

YourBatchFileName

Supprimera tous les sous-chefs vides sous le répertoire actuel.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top