156 votes

Supprimer tous les fichiers et dossiers d'un répertoire

Je veux avoir un fichier batch qui supprimera tous les dossiers et fichiers de mon dossier cache pour mon kit d'outils sans fil.

Actuellement, j'ai les éléments suivants :

cd "C:\Users\tbrollo\j2mewtk\2.5.2\appdb\RMS"
del *.db

Cela supprimera tous les fichiers .db dans mon fichier RMS mais je veux supprimer tous les éléments de ce répertoire. Comment puis-je le faire ?

4 votes

Type del /? à l'invite. Vous obtiendrez des informations sur la façon d'utiliser l'outil. Dans ce cas, del *.* /s fonctionnerait mais ne le faites pas dans le mauvais répertoire !

39 votes

rmdir /s /q c:\users\tbrollo\j2mewtk\2.5.2\appdb\RMS

0 votes

Je suggère de modifier la réponse correcte en fonction des votes positifs.

177voto

morty346 Points 1168

Utilisez :

  • Créer un fichier batch

  • Copiez le texte ci-dessous dans le fichier batch

    set folder="C:\test"
    cd /d %folder%
    for /F "delims=" %%i in ('dir /b') do (rmdir "%%i" /s/q || del "%%i" /s/q)

Il va supprimer tous les fichiers y les dossiers.

4 votes

Génial, je cherchais quelque chose pour nettoyer les fichiers et les dossiers pour un travail mensuel par lots et ceci a fait l'affaire.

11 votes

Assurez-vous que le répertoire existe avant de faire cela.

2 votes

Si vous avez des caractères "spéciaux" dans vos noms de fichiers, faites d'abord chcp 10000 pour changer l'encodage en UTF-16

51voto

Jon Martin Points 1192

del *.* au lieu de del *.db . Cela va tout enlever.

62 votes

Note : Si vous voulez contourner l'invite "Are you sure you want to delete..." vous devrez ajouter les drapeaux /F Q : del . /F /Q

48 votes

Cela ne supprime que les fichiers - pas les dossiers

63 votes

Cette réponse ne devrait pas être marquée comme correcte car elle ne supprime pas les dossiers (comme indiqué dans la question).

36voto

psych Points 1635
IF EXIST "C:\Users\tbrollo\j2mewtk\2.5.2\appdb\RMS" (
    rmdir "C:\Users\tbrollo\j2mewtk\2.5.2\appdb\RMS" /s /q
)

Cela supprimera tout ce qui se trouve dans le dossier (et le dossier lui-même).

19 votes

Je pense que la question porte sur le vidage du répertoire de tout son contenu, mais pas sur la suppression du répertoire lui-même.

16voto

Bill_Stewart Points 2460

del *.* ne supprimera que les fichiers, mais pas les sous-répertoires. Pour effacer le contenu d'un répertoire, vous pouvez utiliser ce script :

@echo off
setlocal enableextensions
if {%1}=={} goto :HELP
if {%1}=={/?} goto :HELP
goto :START

:HELP
echo Usage: %~n0 directory-name
echo.
echo Empties the contents of the specified directory,
echo WITHOUT CONFIRMATION. USE EXTREME CAUTION!
goto :DONE

:START
pushd %1 || goto :DONE
rd /q /s . 2> NUL
popd

:DONE
endlocal

Le site pushd change dans le répertoire dont vous voulez supprimer les enfants. Ensuite, lorsque rd demande de supprimer le répertoire courant et tous les sous-répertoires, la suppression des sous-répertoires réussit, mais la suppression du répertoire courant échoue - parce que nous sommes dedans. Cela produit une erreur qui 2> NUL avale. (2 étant le flux d'erreur).

6 votes

J'ai réfléchi un peu à la manière dont cela fonctionnait exactement, afin de fournir une explication aux autres : Le pushd change dans le répertoire dont vous voulez supprimer les enfants. Ensuite, quand rd demande de supprimer le répertoire courant et tous les sous-répertoires, la suppression des sous-répertoires réussit, mais la suppression du répertoire courant échoue - parce que nous sommes dedans. Cela produit une erreur que 2> NUL avale. (2 étant le flux d'erreur). Très astucieux M. Stewart !

0 votes

Oh, et "setlocal enableextensions" active la possibilité de pousser simultanément le répertoire courant sur la pile, et de changer de répertoire. Cela ne semble être nécessaire qu'avant XP, car à partir de cette date, la fonction est activée par défaut.

0 votes

Pouvez-vous intégrer les informations des commentaires dans la réponse (les commentaires peuvent disparaître à tout moment) ? ( Sans en utilisant "Editer :" "Mise à jour :" étiquettes .)

3voto

poorvesh Points 101

Essayez ce qui suit ; cela fonctionne pour moi.

J'ai une application qui déverse des données dans mon " C:\tmp "et ce qui suit fonctionne le mieux pour moi. Il ne demande même pas Oui o Non pour supprimer les données. J'ai établi un programme pour qu'il s'exécute toutes les 5 minutes.

cd "C:\tmp"

del *.* /Q

10 votes

Si le dossier " C:\tmp "n'est pas présent (si vous ou une autre application avez supprimé ce dossier) et si vous essayez d'exécuter celui-ci, ne va-t-il pas supprimer les données de l'autre dossier dans "C:\" ? (Cela m'est arrivé)

4 votes

Comme le note Vikram : 1) C'est très dangereux, et 2) cela ne supprime pas les sous-répertoires comme indiqué dans la question.

3 votes

En plus du truc des dossiers... vous pouvez juste faire del /q c:\tmp\*.* ce qui est un million de fois plus sûr. Sans oublier cd ne changera que le chemin, pas le lecteur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X