76 votes

Comment puis-je supprimer tous les fichiers/sous-dossiers dans un dossier donné via l'invite de commandes ?

Je voudrais supprimer tous les fichiers et sous-dossiers dans un fichier de commandes sous Windows 7 et conserver le dossier principal. Fondamentalement, vider le dossier. Quelle est l'instruction en ligne de commande pour cela ?

1voto

Maxim Suslov Points 131

Pour supprimer le fichier:

del CHEMIN_VERS_LE_FICHIER

Pour supprimer un dossier avec tous les fichiers qu'il contient:

rmdir /s /q CHEMIN_VERS_LE_DOSSIER

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

del /q CHEMIN_VERS_LE_DOSSIER\*.*
for /d %i in (CHEMIN_VERS_LE_DOSSIER\*.*) 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 Utilisation: %0 chemin
    exit /b 1
)

:: vérifier s'il s'agit d'un dossier ou d'un fichier
set ISDIR=0
set ATTR=%~a1
set DIRATTR=%ATTR:~0,1%
if /i "%DIRATTR%"=="d" set ISDIR=1

:: Supprimer le dossier ou le fichier
if %ISDIR%==1 (rmdir /s /q "%~1") else (del "%~1")
exit /b %ERRORLEVEL%

Quelques exemples d'utilisation:

mydel.bat "chemin\vers\le\dossier avec des espaces"
mydel.bat chemin\vers\le\fichier_ou_dossier

1voto

ThisIsACoolBoy Points 11

Si vous vouliez vider le dossier, voici mon avis:

@ECHO OFF

:choice
cls
set /P c=Quel répertoire? [Bureau, Documents, Téléchargements, Images]
if /I "%c%" EQU "Desktop" set Point = "Desktop"
if /I "%c%" EQU "Documents" set Point = "Documents"
if /I "%c%" EQU "Downloads" set Point = "Downloads"
if /I "%c%" EQU "Pictures" set Point = "Pictures"
if /I "%c%" EQU "Videos" set Point = "Videos"
goto choice
set /P d=Quel sous-répertoire? Si vous mettez plusieurs. Le vôtre devrait ressembler à "chemin/vers/dossier" (pas de fichiers!!)

IF NOT EXIST C:\Users\%USERNAME%\%Point%\%d% GOTO NOWINDIR
rmdir C:\Users\%USERNAME%\%Point%\%d%
mkdir C:\Users\%USERNAME%\%Point%\%d%
:NOWINDIR
mkdir C:\Users\%USERNAME%\%Point%\%d%

Simple comme ça ! J'espère vous avoir aidé ! Je vous recommande de prendre tout le code, si vous ne voulez pas prendre tout le code, alors vous pouvez simplifier cela avec.

IF NOT EXIST *chemin ici* GOTO NOWINDIR
rmdir *chemin ici*
mkdir *chemin ici*
:NOWINDIR
mkdir *chemin ici*

MODIFIER: rmdir ne fonctionnera pas s'il n'est pas vide. Pour corriger cela.

IF NOT EXIST *chemin ici* GOTO NOWINDIR
del *chemin ici*/* /S /Q (ne copiez pas cela, ce qui précède empêche la commande del de supprimer tout dans le dossier, c'est similaire à une autre réponse.)
rmdir *chemin ici*
mkdir *chemin ici*
:NOWINDIR
mkdir *chemin ici*

Je ne suis pas sûr que cela fonctionne mais...

sdelete -s -p *chemin ici*/*

0voto

Erv Points 1

C'est ce qui a fonctionné pour moi.

  1. Naviguez à l'intérieur du dossier où vous voulez supprimer les fichiers.
  2. Tapez : del *
  3. Y pour oui.
  4. Terminé

0voto

Mashimaro Points 1

Exemple : Supprimez tout (dossiers/sous-dossiers/fichiers) dans le dossier Objets 3D mais souhaitez laisser le dossier Objets 3D intact

chemin="C:\Utilisateurs\PhilosophyPoet\Objets 3D" CD chemin RMDIR /s /q chemin

Lorsque CMD est orienté vers le répertoire de travail, l'utilisation de RMDIR supprimera tous les dossiers, sous-dossiers et fichiers du répertoire de travail. Il semble que le processus CMD ne puisse traiter lui-même, tout comme 'Je ne peux pas me jeter dans une poubelle parce que la poubelle doit être scellée par quelqu'un'

0voto

kayleeFrye_onDeck Points 220

1. Ce que l'OP a demandé

del /f /s /q "C:\some\Path\*.*"
rmdir /s /q "C:\some\Path"
mkdir "C:\some\Path"

Cela supprimera tous les fichiers et dossiers dans le répertoire "C:\some\Path" et recréera le répertoire principal à la fin.

2. Ce que la plupart des gens voudront

del /f /s /q "C:\some\Path\*.*"
rmdir /s /q "C:\some\Path"

Cela supprimera complètement le répertoire "C:\some\Path" et tous ses contenus

Si l'OP a une exigence étrangement spécifique de ne pas toucher au répertoire de niveau supérieur de quelque manière que ce soit... ils devraient le mentionner dans leur question :)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X