Batch : Effacer le contenu d’un repertoire

Effacer le contenu d’un répertoire, tant les sous-répertoire que les fichiers, peut paraitre simple.
Mais après quelques tests, il s’avère que l’opération est plus complexe que prévu.

Un script batch DOS peut le faire pour vous:

Supprimer le contenu d’un repertoire :

      @echo off
      pushd %1
      del /q "*.*"
      for /f "tokens=*" %%a in ('dir /b /ad') do rd /s /q "%%a"
      popd

L’exécution du script se fait sous la forme “nom_du_fichier.bat [cible]” (par exemple del_folder.bat d:\temp\)

Analyse du script:

pushd permet de stocker le répertoire en cours pour une utilisation futur par la commande POPD, ensuite passe au répertoire spécifié dans l’argument.
%1 correspond à l’argument qui a été soumis lors de l’exécution du script.
pushd %1 stock le répertoire courant et passe au répertoire soumis lors de l’exécution du script.

del /q “*.*” supprime tout le contenu du répertoire en cours.
l’argument /q permet de supprimer sans confirmation.

for /f “tokens=*”:
la boucle for avec l’argument /f et le “token=”*” parse (segmente) le contenu de la cible, ici, le résultat de “dir /b /ad”
Ici, le token=* permet de faire une lecture ligne à ligne.

“token=*” %%a in (‘dir /b /ad’):
la variable de jeton “%%a” de la boucle “for” prend la valeur du pointeur dans la liste de répertoire obtenue  par la commande dir /b /ad
dir /b /ad : liste les répertoire en format abrégé

A chaque itération de la commande for, le répertoire courant stocké dans la variable “%%a” est supprimé ainsi que tous les sous-répertoire.
Cette opération est effectuée par la commande “rd /s /q”

rd /s /q %%a:
Supprime le répertoire courant ainsi que tous les sous-répertoires et fichiers présents, l’argument /q permet d’executer la commande en mode silencieux.

popd: repasse le répertoire courant en celui précédemment stocké par la commande PUSHD

This entry was posted in Scripting and tagged , . Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>