web-dev-qa-db-fra.com

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

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

42
Tony_Henrich

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

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

La meilleure solution: par exemple Je veux supprimer tous les fichiers et sous-répertoires du répertoire parent. Disons "C:\Utilisateurs\Bureau\Nouveau dossier \". Le moyen le plus simple est de créer un fichier de commandes composé de trois commandes.

cd C:\Utilisateurs\Bureau\Nouveau dossier \

del */S/Q

rmdir/S/Q "C:\Utilisateurs\Bureau\Nouveau dossier \"

Ici tout d'abord, tous les fichiers de tous les sous-répertoires seront nettoyés, puis tous les sous-répertoires vides seront nettoyés. Le répertoire de travail actuel étant le répertoire parent i.e. "\ Nouveau dossier", la commande rmdir ne peut pas supprimer ce répertoire lui-même.

21
Annasaheb

Accédez au répertoire parent:

pushd "Parent Directory"

Supprimer les sous-dossiers:

rd /s /q . 2>nul
9
user340956

vous pouvez utiliser rmdir pour supprimer les fichiers et les sous-dossiers, comme ceci:

rmdir /s/q MyFolderPath

Cependant, cela est beaucoup plus rapide, surtout quand vous avez beaucoup de sous-dossiers dans votre structure pour utiliser del avant le rmdir, comme ceci:

del /f/s/q MyFolderPath > nul
rmdir /s/q MyFolderPath
5
Einbert Alshtein
rmdir "c:\pathofyourdirectory" /q /s

N'oubliez pas d'utiliser les guillemets et pour le /q /s, tous les référentiels seront supprimés sans invite.

5
SuperUser

Vous pouvez le faire rapidement et facilement en mettant ces trois instructions dans votre fichier bat:

mkdir empty_folder
robocopy /mir empty_folder "path_to_directory"
rmdir empty_folder
3
fireblood

Si vous souhaitez supprimer tous les fichiers d'un dossier, y compris tous les sous-dossiers, sans vous fier à certaines conditions d'erreur pour conserver le dossier racine intact (comme je l'ai vu dans une autre réponse), vous pouvez obtenir un fichier de traitement de ce type:

@echo off

REM Checking for command line parameter
if "%~1"=="" (

    echo Parameter required.
    exit /b 1

) else (

    REM Change directory and keep track of the previous one
    pushd "%~1"

    if errorlevel 1 (

        REM The directory passed from command line is not valid, stop here.
        exit /b %errorlevel%

    ) else (

        REM First we delete all files, including the ones in the subdirs, without confirmation
        del * /S /Q

        REM Then we delete all the empty subdirs that were left behind
        for /f %%D IN ('dir /b /s /a:d "%~1"') DO rmdir /S /Q "%%D"

        REM Change directory back to the previous one
        popd

        REM All good.
        exit /b 0
    )

)

Et ensuite, vous l'appeleriez simplement avec:

empty_my_folder.bat "C:\whatever\is\my folder"
3
Gio

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 tout 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
1
Maxim Suslov

Cela fonctionnait mieux pour moi lorsque j'avais des espaces dans les noms de dossiers.

@echo off
REM ---- Batch file to clean out a folder
REM Checking for command line parameter
if "%~1"=="" (

echo Parameter required.
exit /b 1

) else (
echo ***********************************************************************************
    echo *** Deleting all files, including the ones in the subdirs, without confirmation *** 
    del "%~1\*" /S /Q
echo ***********************************************************************************
    REM Deleting all the empty subdirs that were left behind
FOR /R "%~1" %%D IN (.) DO (
    if "%%D"=="%~1\."  (
    echo *** Cleaning out folder: %~1 *** 
    ) else (
    echo Removed folder "%%D"
    rmdir /S /Q "%%D"
    )
) 

    REM All good.
    exit /b 0

)
1
Ed Hammond

C'est ce qui a fonctionné pour moi.

  1. Naviguez dans le dossier où vous souhaitez supprimer les fichiers.
  2. Type: del *
  3. Y pour oui.
  4. Terminé
0
Erv