CMD: Como eu excluo todo o conteúdo de todos os diretórios (no diretório atual) sem excluir os próprios diretórios?

0

Por exemplo:

Estou no diretório:

F:\Data

Dentro deste diretório, eu tenho quatro diretórios:

F:\Data>dir
22179 22915 23459 23460

Esses diretórios têm vários conteúdos, incluindo diretórios e arquivos. Estou tentando executar algo como:

rmdir /s *\*

onde excluo todo o conteúdo desses diretórios numerados, deixando os diretórios vazios. Existe um one-liner que pode fazer isso, ou eu tenho que percorrer os subdiretórios?

    
por merlin2011 11.12.2011 / 02:30

3 respostas

1
(for /d %A in (*) do @for /d %B in ("%A\*") do @rd /s /q "%~B")&del /s /q *.* >nul

É um transatlântico - mas eu não diria que é simples. Ele percorre os primeiros dois níveis da árvore, mas tudo mais profundo será removido sem mais loops. Se em um arquivo de lote,% A e% B se tornarão %% A e %% B

Eu não tinha certeza se você queria que todos os arquivos fossem excluídos da sua raiz (F: \ data no seu caso). O acima irá excluir arquivos encontrados em sua raiz.

Se você quiser preservar os arquivos em root, então acho que isso deve funcionar (eu não testei este)

for /d %A in (*) do @(@for /d %B in ("%A\*") do @rd /s /q "%~B")&@del /q "%A\*.* >nul

Os símbolos @ podem ser removidos dos dois conjuntos de código - eles estão lá apenas para evitar que cada nível do comando seja ecoado.

    
por 11.12.2011 / 05:38
4

Tente isso, acho que isso ajudará ...

RD / s / q (e, em seguida, o caminho para a pasta a ser removida)

removerá todo o conteúdo com a própria pasta

    
por 13.11.2012 / 23:22
1

O DEL /S /Q *.* funciona para você?

    
por 11.12.2011 / 02:40