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.
del *.*
au lieu de del *.db
. Cela supprimera tout.
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
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).
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
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.
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%
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
)
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
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.
Mieux encore, disons que je veux tout supprimer dans le dossier c:\windows\temp.
@echo off
rd c:\windows\temp /s /q
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
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