web-dev-qa-db-fra.com

Fichier de commandes. Supprimer tous les fichiers et dossiers d'un répertoire

Je souhaite disposer d'un fichier de commandes qui supprime tous les dossiers et fichiers de mon dossier Cache pour ma boîte à 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 de mon répertoire RMS, mais je souhaite tout supprimer de ce répertoire.

Peux-tu m'aider? Merci.

118
user69514

del *.* au lieu de del *.db. Cela supprimera tout.

44
Jon Martin

Créer un fichier batch

copier le texte ci-dessous dans un 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)

Supprime tous les fichiers ET dossiers

143
morty346
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 du dossier (et du dossier lui-même).

29
psych

del *.* ne supprimera que les fichiers, mais pas les sous-répertoires. Pour modifier 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
13
Bill_Stewart

Rassemblez ceci à partir de ce que morty346 a posté:

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

Ajoute une vérification rapide que le dossier défini dans la variable existe en premier, puis change de répertoire en dossier et supprime le contenu.

11
Fantus_Longhorn

Vous pouvez le faire en utilisant del et l'indicateur /S (pour lui dire de renvoyer tous les fichiers de tous les sous-répertoires):

del /S C:\Path\to\directory\*

La commande RD peut également être utilisée. Supprimer récursivement silencieusement sans invite

@RD /S /Q %VAR_PATH%

https://technet.Microsoft.com/en-gb/library/bb490990.aspx

9
PodTech.io
set "DIR_TO_DELETE=your_path_to_the_folder"

IF EXIST %DIR_TO_DELETE% (
    FOR /D %%p IN ("%DIR_TO_DELETE%\*.*") DO rmdir "%%p" /S /Q
    del %DIR_TO_DELETE%\*.* /F /Q
)
5
Cristian Tetic

Essayez ceci, cela fonctionne pour moi, j'ai une application qui vide les données dans mon dossier "C:\tmp" et les suivantes fonctionnent le mieux pour moi, il ne demande même pas Oui ou Non pour supprimer les données un programme pour qu'il s'exécute toutes les 5 minutes

cd "C:\tmp"

del *.* /Q
4
poorvesh

Vous pouvez utiliser robocopy pour mettre en miroir un dossier vide dans le dossier que vous effacez.

robocopy "C:\temp\empty" "C:\temp\target" /E /MIR

Cela fonctionne également si vous ne pouvez pas supprimer ou recréer le dossier actuel.

Cela nécessite un répertoire vide existant.

2
Aaron

Mieux encore, disons que je veux tout supprimer dans le dossier c:\windows\temp.

@echo off
rd c:\windows\temp /s /q
2
user3788752

Utilisation

set dir="Your Folder Path Here"
rmdir /s %dir%
mkdir %dir%

Cette version supprime sans demander:

set dir="Your Folder Here"
rmdir /s /q %dir%
mkdir %dir%

Exemple:

set dir="C:\foo1\foo\foo\foo3"
rmdir /s /q %dir%
mkdir %dir%

Cela effacera C:\foo1\foo\foo\foo3.

Je voudrais mentionner @Abdullah Sabouin avec cette réponse https://stackoverflow.com/a/44578851/8238944 . Il y avait une confusion à propos de moi en le copiant. Je n'ai pas remarqué son post.

Je voudrais remercier @melpomene pour avoir signalé des erreurs!

Juste une version modifiée de https://stackoverflow.com/users/478183/morty346 answer

set folder="C:\test"
cd /D %folder%
if NOT %errorlevel% == 0 (exit /b 1)
echo entire content of %cd% will be deleted, press Ctrl-C to abort
pause
REM first the directories /ad option of dir
for /F "delims=" %%i in ('dir /b /ad') do (echo rmdir "%%i" /s/q)
REM now the files /a-d option of dir
for /F "delims=" %%i in ('dir /b /a-d') do (echo del "%%i" /q)
REM to deactivate simulation mode remove the Word echo before rmdir and del
0
grenix

Vous ne pouvez pas tout supprimer avec rmdir ou del uniquement:

  • rmdir /s /q n'accepte pas les paramètres génériques. Donc rmdir /s /q * sera une erreur.
  • del /s /f /q supprimera tous les fichiers, mais les sous-répertoires vides resteront.

Ma solution préférée (comme dans beaucoup d'autres fichiers batch) est la suivante:

rmdir /s /q . 2>NUL
0
butfly