Linha de comando del c: \ mydir \ *. * - excluir subpastas também

3

Eu tenho um script que executa o comando:

del c:\mydir\*.*

Existe uma opção de linha de comando que eu possa usar que também excluirá todas as subpastas desse diretório? Obrigado!

    
por Mike Cole 03.12.2009 / 16:27

7 respostas

6

Se houver arquivos no diretório C: \ mydir, será necessário fazer as duas linhas. Caso contrário, a primeira linha fará o que você deseja:

FOR /D %i IN (C:\mydir\*) DO RD /S /Q "%i"
DEL /Q C:\mydir\*.* 

Isso preserva o diretório C: \ mydir.

Edit: David1235 está certo. Se você quiser fazer isso em um arquivo de lote, você precisará duplicar o "%" na linha "FOR ...".

É um pouco incerto para mim por que o script de David1235 precisa do "pushd" e "popd" quando você pode especificar o caminho certo nas linhas "FOR ..." e "DEL ...".

    
por 03.12.2009 / 16:54
4

Se você deseja executar seu script de qualquer lugar, tente

@echo off
pushd "C:\mydir"
for /d %%d in (*.*) do rmdir /s /q "%%d"
del /q *.*
popd

Em um script em lote, você precisa dos sinais de porcentagem dupla. De "ajuda para":

To use the FOR command in a batch program, specify %%variable instead
of %variable.  Variable names are case sensitive, so %i is different
from %I.
    
por 03.12.2009 / 17:10
1

Existe um motivo para isso:

DEL /Q /S C:\mydir\*

não funciona?

    
por 03.12.2009 / 17:01
1

Em vez de complexos FOR ... LOOPS, etc. Gostaria de usar:

c:
cd\mydir
del /q *.* /s 

... mas um método ainda mais rápido é:

rd /q /s c:\mydir

como RD é "remover diretório", assim como o antigo DELTREE

    
por 29.12.2010 / 08:39
0

Sim, rmdir.

(dica: rmdir /?)

Edit: Você provavelmente quer manter a pasta. Experimente isso em um arquivo em lotes:

@echo off
rmdir C:\mydir /S
mkdir C:\mydir
    
por 03.12.2009 / 16:28
0

A maneira mais curta e simples:

CD "%temp%\OrYourPath\" && RD /q /s .

Isso preserva a pasta pai, que pode ter ACLs que você deseja manter. Se algum conteúdo estiver em uso, você receberá erros. Se você quiser silenciá-los e ignorá-los, adicione um 2>nul no final.

Se você quiser permanecer no diretório atual ou tiver um caminho UNC, use PUSHD + RD + POPD em vez de CD + RD.

    
por 09.07.2018 / 21:12
-3

Estou usando uma máquina virutal com ms dos 6.22. comando rd não pode ter parâmetros ...

para excluir c: \ folder \ folder \ folder com arquivos e o que quer que você esteja em c: \ use:

deltree \ folder (solicitará confirmação) deltree \ y c: \ folder (isso será feito imediatamente)

    
por 20.01.2015 / 02:40