Como posso apagar todos os arquivos / subpastas em uma determinada pasta através do prompt de comando?

40

Eu gostaria de excluir todos os arquivos e subpastas em um arquivo de lote no Windows 7 e manter a pasta superior. Basicamente esvaziando a pasta. Qual é a instrução de linha de comando para isso?

    
por Tony_Henrich 09.08.2010 / 18:42

10 respostas

50

Você pode fazer isso usando del e /S flag (para dizer a ele para remover todos os arquivos de todos os subdiretórios):

del /S C:\Path\to\directory\*
    
por 09.08.2010 / 18:46
19

A melhor solução: por exemplo. Eu quero excluir todos os arquivos e subdiretórios do diretório pai digamos "C: \ Users \ Desktop \ New folder \". A maneira mais fácil é criar um arquivo em lote com menos de três comandos.

cd C:\Users\Desktop\New folder\

del * /S /Q

rmdir /S /Q "C:\Users\Desktop\New folder\"

Aqui, primeiro, ele limpará todos os arquivos em todos os subdiretórios e, em seguida, limpará todos os subdiretórios vazios. Como o diretório de trabalho atual é o diretório pai, por exemplo, "\ New folder", o comando rmdir não pode excluir este diretório em si.

    
por 05.10.2013 / 06:44
7

Navegue até o diretório pai:

pushd "Parent Directory"

Exclua as subpastas:

rd /s /q . 2>nul
    
por 03.07.2014 / 14:38
5
rmdir "c:\pathofyourdirectory" /q /s

Não se esqueça de usar as aspas e, para o /q /s , ele excluirá todos os repositórios e sem avisar.

    
por 31.07.2013 / 20:23
5

você pode usar o rmdir para excluir os arquivos e a subpasta, assim:

rmdir /s/q MyFolderPath

No entanto, é significativamente mais rápido, especialmente quando você tem muitas subpastas em sua estrutura para usar o del antes do rmdir, assim:

del /f/s/q MyFolderPath > nul
rmdir /s/q MyFolderPath
    
por 27.04.2015 / 09:21
3

Você pode fazer isso de forma rápida e fácil, colocando estas três instruções no seu arquivo bat:

mkdir empty_folder
robocopy /mir empty_folder "path_to_directory"
rmdir empty_folder
    
por 02.02.2017 / 20:20
2

Se você deseja excluir todos os arquivos em uma pasta, incluindo todas as subpastas e não confiar em algumas condições de erro para manter a pasta raiz intacta (como eu vi em outra resposta) você poderia ter um arquivo em lote como este:

@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
    )

)

E então você simplesmente ligaria para:

empty_my_folder.bat "C:\whatever\is\my folder"
    
por 05.02.2014 / 17:39
1

Isso funcionou melhor para mim quando eu tinha espaços nos nomes das pastas.

@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

)
    
por 13.02.2014 / 19:06
1

Para excluir o arquivo:

del PATH_TO_FILE

Para excluir a pasta com todos os arquivos:

rmdir /s /q PATH_TO_FOLDER

Para excluir todos os arquivos da pasta específica (não excluir a própria pasta) é um pouco complicado. del /s *.* não pode excluir pastas, mas remove arquivos de todas as subpastas. Então, dois comandos são necessários:

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

Você pode criar um script para excluir o que quiser (pasta ou arquivo) como este 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%

Algum exemplo de uso:

mydel.bat "path\to\folder with spaces"
mydel.bat path\to\file_or_folder
    
por 10.11.2016 / 18:16
0

Isso é o que funcionou para mim.

  1. Navegue dentro da pasta onde você deseja excluir os arquivos.
  2. Tipo: del *
  3. Y para sim.
  4. Feito
por 07.05.2018 / 20:43