web-dev-qa-db-fra.com

Comment supprimer tous les fichiers et dossiers d'un dossier par appel cmd

J'utilise Windows.

Je souhaite supprimer tous les fichiers et dossiers d'un dossier par appel système.

Je peux appeler comme ça:

>rd /s /q c:\destination
>md c:\destination

Connaissez-vous un moyen plus facile?

63
ufukgun

Non, je n'en connais pas.

Si vous souhaitez conserver le répertoire d'origine pour une raison quelconque (ACL, etc.) et souhaitez plutôt le vider, vous pouvez procéder comme suit:

del /q destination\*
for /d %x in (destination\*) do @rd /s /q "%x"

Cela supprime d'abord tous les fichiers du répertoire, puis tous les répertoires imbriqués de manière récursive, tout en maintenant le répertoire de niveau supérieur tel quel (à l'exception de son contenu).

Notez que dans un fichier de commandes, vous devez doubler le % dans la boucle for:

del /q destination\*
for /d %%x in (destination\*) do @rd /s /q "%%x"
110
Joey

del c:\destination\*.* /s /q a travaillé pour moi. J'espère que cela fonctionne pour vous aussi. 

26
Sean

Je pense que le moyen le plus simple de le faire est:

rmdir /s /q "C:\FolderToNotToDelete\"

Le dernier "\" dans le chemin est la partie importante.

25
Banan

Si les noms de sous-dossiers peuvent contenir des espaces, vous devez les entourer de guillemets. L'exemple suivant montre cela pour les commandes utilisées dans un fichier de commandes.

set targetdir=c:\example
del /q %targetdir%\*
for /d %%x in (%targetdir%\*) do @rd /s /q ^"%%x^"
9
fractor

Oui! Utilisez Powershell:

powershell -Command "Remove-Item 'c:\destination\*' -Recurse -Force"
8
Rosberg Linhares

Pour supprimer le fichier:

del PATH_TO_FILE

Pour supprimer un dossier contenant tous les fichiers:

rmdir /s /q PATH_TO_FOLDER

Supprimer tous les fichiers d'un dossier spécifique (ne pas supprimer le dossier lui-même) est un peu compliqué. del /s *.* ne peut pas supprimer de dossiers, mais supprime les fichiers de tous les sous-dossiers. Donc, deux commandes sont nécessaires:

del /q PATH_TO_FOLDER\*.*
for /d %i in (PATH_TO_FOLDER\*.*) do @rmdir /s /q "%i"

Vous pouvez créer un script pour supprimer ce que vous voulez (dossier ou fichier) comme ceci: mydel.bat:

@echo off
setlocal enableextensions

if "%~1"=="" (
    echo Usage: %0 path
    exit /b 1
)

:: check whether it is folder or file
set ISDIR=0
set ATTR=%~a1
set DIRATTR=%ATTR:~0,1%
if /i "%DIRATTR%"=="d" set ISDIR=1

:: Delete folder or file
if %ISDIR%==1 (rmdir /s /q "%~1") else (del "%~1")
exit /b %ERRORLEVEL%

Quelques exemples d'utilisation:

mydel.bat "path\to\folder with spaces"
mydel.bat path\to\file_or_folder
3
Maxim Suslov

Une option simple en ligne consiste à créer un répertoire vide quelque part sur votre système de fichiers, puis à utiliser ROBOCOPY ( http://technet.Microsoft.com/en-us/library/cc733145.aspx ) avec le /MIR commutateur pour supprimer tous les fichiers et sous-dossiers. Par défaut, robocopy ne copie pas la sécurité. Par conséquent, les listes de contrôle d'accès de votre dossier racine doivent rester intactes.

Vous souhaitez également probablement définir une valeur pour le commutateur de nouvelle tentative, /r, car le nombre de tentatives par défaut est de 1 million.

robocopy "C:\DoNotDelete_UsedByScripts\EmptyFolder" "c:\temp\MyDirectoryToEmpty" /MIR /r:3
1
BateTech

Accédez au répertoire parent

Line1 pushd "Répertoire parent"

Supprimer les sous-dossiers

Line2 rd/s/q. 2> nul

https://superuser.com/questions/173859/how-can-i-delete-all-files-subfolders-in-a-given-folder-via-the-command-Prompt

0

J'avais un dossier d'index avec 33 dossiers dans lequel tous les fichiers et sous-dossiers avaient été supprimés. J'ai ouvert une ligne de commande dans le dossier d'index et ensuite utilisé ces commandes:

for /d in (*) do rd /s /q "%a" & (
md "%a")

Je les ai séparés en deux lignes (appuyez sur Entrée après la première ligne, puis, lorsque vous en demandez plus, ajoutez une deuxième ligne), car si elle est entrée sur une seule ligne, cela risque de ne pas fonctionner. Cette commande effacera chaque répertoire, puis en créera un nouveau qui sera vide, supprimant ainsi tous les fichiers et sous-répertoires du répertoire d'origine.

0
Ynotinc