Exclui todos os arquivos de uma pasta e suas subpastas

41

Eu quero remover todos os arquivos de uma estrutura de pastas, então fico com uma estrutura de pastas vazia.

Isso pode ser conseguido em scripts em lote ou VBScript ?

Eu tentei um comando em lote muito básico, mas isso exigia que o usuário permitisse a exclusão de cada arquivo. Esta não foi uma solução adequada, pois há muitas centenas de arquivos e isso aumentará enormemente com o tempo.

O que você pode sugerir?

    
por BobJim 15.04.2014 / 14:40

12 respostas

61

Isso pode ser feito usando o PowerShell :

Get-ChildItem -Path C:\Temp -Include *.* -File -Recurse | foreach { $_.Delete()}

Este comando obtém cada item filho em $path , executa o método delete em cada um deles e é bastante rápido. A estrutura da pasta é deixada intacta.

Se você tiver arquivos sem uma extensão, use

Get-ChildItem -Path C:\Temp -Include * -File -Recurse | foreach { $_.Delete()}

em vez disso.

Parece que o parâmetro -File pode ter sido adicionado após o PowerShell v2. Se for esse o caso, então

Get-ChildItem -Path C:\Temp -Include *.* -Recurse | foreach { $_.Delete()}

Deve fazer o truque para arquivos que tenham uma extensão.

Se não funcionar, verifique se você tem uma versão atualizada do Powershell

    
por 15.04.2014 / 15:18
21

Você pode fazer isso com o comando del :

dir C:\folder
del /S *

A opção /S é para excluir apenas arquivos recursivamente.

    
por 15.04.2014 / 14:44
8

PowerShell curto e de suíte. Não tenho certeza sobre qual versão mais baixa do PS ele irá trabalhar.

Remove-Item c:\Tmp\* -Recurse -Force
    
por 02.11.2017 / 18:21
4

Lendo nas entrelinhas da sua pergunta original, posso oferecer uma linha de código BATCH alternativa que você possa usar. O que isso fará quando executado é somente excluir arquivos com mais de 60 dias. Dessa forma, você pode colocar isso em uma tarefa agendada e, quando executado, exclui os arquivos em excesso que você não precisa, em vez de apagar todo o diretório. Você pode mudar de 60 a 5 dias ou até mesmo de 1 dia se quiser. Isso não exclui pastas.

forfiles -p "c:\path\to\files" -d -60 -c "cmd /c del /f /q @path"
    
por 15.04.2014 / 15:18
2

Usando o PowerShell:

Get-ChildItem -Path c:\temp -Include * | remove-Item -recurse 
    
por 28.10.2014 / 16:39
2

Use o PowerShell para excluir um único arquivo ou pasta antes de começar a executar o comando Delete powershell para garantir que você esteja conectado ao servidor ou PC com uma conta que tenha acesso total aos objetos que deseja excluir.

Com Exemplo: < href="http://dotnet-helpers.com/powershell-demo/how-to-delete-a-folder-or-file-using-powershell/"> link

Usando o PowerShell commnads para excluir um arquivo

Remove-Item -Path "C:\dotnet-helpers\DummyfiletoDelete.txt"

O comando acima excede e exclui o arquivo "DummyfiletoDelete.txt" que está dentro do local "C: \ dotnet-helpers".

Usando o PowerShell commnads para excluir todo o arquivo

Remove-Item -Path "C:\dotnet-helpers*.*"

Usando o PowerShell commnads para excluir todos os arquivos e pastas

Remove-Item -Path "C:\dotnet-helpers*.*" -recurse

Recurse detalha e encontra muitos mais arquivos. O parâmetro –recurse permitirá que o PowerShell remova itens filhos sem pedir permissão. Além disso, o parâmetro –force pode ser adicionado para excluir arquivos ocultos ou somente leitura.

Usar o comando -Force para excluir arquivos forçam totalmente

Usando o PowerShell commnads para excluir toda a força do arquivo totalmente

Remove-Item -Path "C:\dotnet-helpers*.*" -Force

    
por 10.05.2018 / 09:13
1

Tente isso usando o PowerShell. Neste exemplo, quero excluir todos os arquivos .class:

Get-ChildItem '.\FOLDERNAME' -include *.class -recurse | foreach ($_) {remove-item $_.FullName}
    
por 20.11.2014 / 22:28
1
  1. No Windows Explorer, selecione o diretório raiz contendo todos os arquivos e pastas.

  2. Pesquise *

  3. Classificar por tipo (todas as pastas estarão no topo e todos os arquivos listados abaixo)

  4. Selecione todos os arquivos e pressione Excluir.

Isso excluirá todos os arquivos e preservará a estrutura do diretório.

    
por 16.03.2015 / 10:12
1

Exclua todos os arquivos do diretório atual e dos subdiretórios, mas deixando a estrutura das pastas.

A opção

( /Q ) é para perguntar ao usuário se ele está ok para excluir

Cuidado : experimente sem o /Q para garantir que você não está excluindo nada precioso.

del /S * /Q 
    
por 18.05.2015 / 13:30
1

Esta é a maneira mais fácil da IMO

Abra o PowerShell, navegue até o diretório ( cd ), ENTÃO

ls -Recurse * | rm

(Poof) tudo se foi ...

Se você deseja excluir com base em uma extensão específica

ls -Recurse *.docx | rm

ls is listing the directory

-Recurse is a flag telling powershell to go into any sub directories

* says everything

*.doc everything with .doc extension

| feed the output from the left to the right

rm delete

Todas as outras respostas parecem tornar isso mais confuso do que o necessário.

    
por 12.10.2016 / 22:45
0
dir C:\testx\ -Recurse -File | rd -WhatIf
What if: Performing the operation "Remove File" on target "C:\testx\x.txt".
What if: Performing the operation "Remove File" on target "C:\testx\bla\x.txt".
    
por 10.04.2017 / 12:36
-1

Como complemento das respostas acima, na verdade não há necessidade de usar o Get-Childitem e passar o resultado para o pipeline nas respostas acima, porque a palavra-chave -Include está incluída no comando Remove-Item

Pode-se simplesmente:

Remove-Item -Include ". " "C: \ Temp" -Recurso

    
por 14.10.2018 / 16:59