Como excluir todos os arquivos e pastas em uma pasta por chamada cmd

Respostas:

142

Não, eu não conheço nenhum.

Se você deseja reter o diretório original por algum motivo (ACLs etc.) e, em vez disso, deseja realmente esvaziá-lo, você pode fazer o seguinte:

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

Isso primeiro remove todos os arquivos do diretório e, em seguida, remove recursivamente todos os diretórios aninhados, mas no geral mantendo o diretório de nível superior como está (exceto por seu conteúdo).

Observe que, em um arquivo em lote, você precisa dobrar o %dentro do forloop:

del /q destination\*
for /d %%x in (destination\*) do @rd /s /q "%%x"
Joey
fonte
3
Consegui fazer isso sem um arquivo em lote. use o && para concat as duas operações
Matt Broekhuis
1
Eu sou um noob completo do Windows Shell: como faço para definir o destino para um caminho com este exemplo?
low_rents
Você substitui a palavra destinationpelo caminho, possivelmente usando aspas em torno de tudo, se necessário.
Joey
4
Esta resposta me deixa triste, porque é a melhor resposta
KCD
1
@stenci: A segunda linha pode excluir o diretório fornecido. Ele faz isso recursivamente, de fato, mas não pode excluir um arquivo. Portanto, para remover tudo dentro de um diretório, você deve remover todos os arquivos e todos os diretórios. Observe que não se trata de excluir um único diretório e tudo dentro dele. Trata-se de deletar tudo dentro e manter o diretório pai.
Joey de
40

del c:\destination\*.* /s /qtrabalhou para mim. Espero que funcione para você também.

Sean
fonte
13
Exclui todos os arquivos, mas não as pastas.
Eric
2
O que funcionou para mim foi navegar até a pasta. (clique com o botão direito do mouse, selecione abrir prompt cmd aqui) entãodel *.*
Daniel L. VanDenBosch
exemplo para caminho relativodel "../../server/front-end\*.*"
FindOutIslamNow
@ DanielL.VanDenBosch, isso não é muito programável.
Synetech
29

Acho que a maneira mais fácil de fazer isso é:

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

O último "\" no caminho é a parte importante.

Banan
fonte
27
Isso também exclui a própria pasta.
Archie de
Perfeito, é isso que eu preciso :)
gNerb
Isso funciona recursivamente qual é o caminho muito longo?
eomeroff
2
combinar isso com mkdir C:\FolderToNotToDeletefoi o suficiente para mim :)
qbolec
1
Isso pode ser problemático se sua pasta pai (que é excluída dessa forma) tiver algumas permissões importantes, que agora você precisa recriar ...
Mladen B.
15

Sim! Use o PowerShell:

powershell -Command "Remove-Item 'c:\destination\*' -Recurse -Force"
Rosberg Linhares
fonte
Que pena que o PowerShell é uma fera pesada, inchada e muito lenta. : - |
Synetech
13

Se os nomes das subpastas contiverem espaços, será necessário colocá-los entre aspas de escape. O exemplo a seguir mostra isso para comandos usados ​​em um arquivo em lote.

set targetdir=c:\example
del /q %targetdir%\*
for /d %%x in (%targetdir%\*) do @rd /s /q ^"%%x^"
fração
fonte
6

Para excluir o arquivo:

del PATH_TO_FILE

Para excluir uma pasta com todos os arquivos nela:

rmdir /s /q PATH_TO_FOLDER

Excluir todos os arquivos de uma 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. Portanto, são necessários dois comandos:

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%

Alguns exemplos de uso:

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

Uma opção fácil de uma linha é criar um diretório vazio em algum lugar do seu sistema de arquivos e, em seguida, usar ROBOCOPY( http://technet.microsoft.com/en-us/library/cc733145.aspx ) com a /MIRopção para remover todos os arquivos e subpastas. Por padrão, o robocopy não copia a segurança, portanto, as ACLs em sua pasta raiz devem permanecer intactas.

Também é provável que você queira definir um valor para a opção de repetição /r, porque o número padrão de tentativas é 1 milhão.

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

Eu tinha uma pasta de índice com 33 pastas que precisavam de todos os arquivos e subpastas removidos delas. Abri uma linha de comando na pasta de índice e usei estes comandos:

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

Eu os separei em duas linhas (pressione Enter após a primeira linha e, quando solicitado, adicione a segunda linha) porque, se inserido em uma única linha, pode não funcionar. Este comando irá apagar cada diretório e então criar um novo que está vazio, removendo assim todos os arquivos e subpastas no diretório original.

Ynotinc
fonte
0

São necessários 2 passos simples. [/ q significa silencioso, / f significa forçado, / s significa subdir]

  1. Esvazie o diretório para remover

    del *.* /f/s/q  
    
  2. Remova o diretório

    cd ..
    rmdir dir_name /q/s
    

Ver foto

Folha de jenna
fonte
0

tente fazer isso, isso irá pesquisar toda MinhaPasta no diretório raiz e excluir todas as pastas chamadas MinhaPasta

for /d /r "C:\Users\test" %%a in (MyFolder\) do if exist "%%a" rmdir /s /q "%%a"
Shailesh Tiwari
fonte
0
del .\*

Este comando exclui todos os arquivos e pastas da navegação atual em sua linha de comando.

Yuvraj Hinger
fonte