2014-04-15 12:40:31 +0000 2014-04-15 12:40:31 +0000
57
57

Eliminar todos os ficheiros de uma pasta e das suas sub-pastas

Quero eliminar todos os ficheiros de uma estrutura de pastas, por isso, fico com uma estrutura de pastas vazias.

Isto pode ser conseguido em lote ou em VBScript scripting?

Tentei um comando de lote muito básico, mas isto exigia que o utilizador permitisse a eliminação de cada ficheiro. Esta não foi uma solução adequada uma vez que existem muitas centenas de ficheiros e isto irá aumentar consideravelmente com o tempo.

O que pode sugerir?

Respostas (13)

81
81
81
2014-04-15 13:18:38 +0000

Isto pode ser feito usando PowerShell :

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

Este comando obtém cada item criança em $path, executa o método de apagar em cada um, e é bastante rápido. A estrutura de pastas é deixada intacta.

Se pode ter ficheiros sem uma extensão, use

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

.

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

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

Deve fazer o truque para ficheiros que têm uma extensão.

Se não funcionar, verifique se tem uma versão actualizada do Powershell

29
29
29
2017-11-02 17:21:27 +0000

PowerShell curto e suite. Não tenho a certeza com que versão mais baixa de PS vai funcionar.

Remove-Item c:\Tmp\* -Recurse -Force
22
22
22
2014-04-15 12:44:30 +0000

Pode fazê-lo com o comando del:

dir C:\folder
del /S *

A chave /S é para apagar apenas ficheiros recursivamente.

4
4
4
2014-04-15 13:18:19 +0000

Leitura nas entrelinhas da sua pergunta original Posso oferecer uma linha de código BATCH alternativa que pode utilizar. O que isto fará quando executado é apenas apagar ficheiros com mais de 60 dias. Desta forma pode colocar isto numa tarefa agendada e quando esta for executada apaga os ficheiros em excesso que não precisa, em vez de apagar o directório inteiro. Pode alterar 60 para 5 dias ou mesmo 1 dia se o desejar. Isto não apaga pastas.

forfiles -p "c:\path\to\files" -d -60 -c "cmd /c del /f /q @path"
4
4
4
2014-10-28 15:39:38 +0000

Utilização do PowerShell:

Get-ChildItem -Path c:\temp -Include * | remove-Item -recurse
3
3
3
2018-05-10 07:13:40 +0000

Utilize PowerShell para eliminar um único ficheiro ou pasta. Antes de executar o comando Delete no powerhell precisamos de ter a certeza que está ligado ao servidor ou PC com uma conta que tem acesso total aos objectos que pretende apagar. Com Exemplo: http://dotnet-helpers.com/powershell-demo/how-to-delete-a-folder-or-file-using-powershell/

Usando comandos PowerShell para apagar um ficheiro

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

O comando acima irá executar e apagar o ficheiro “DummyfiletoDelete.txt” que se encontra dentro da localização “C:\dotnet-helpers\ *.

Usando comandos PowerShell para apagar todos os ficheiros

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

Usando os comandos PowerShell para apagar todos os ficheiros e pastas

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

-recurse perfura e encontra muito mais ficheiros. O parâmetro –recurse permitirá ao PowerShell remover qualquer item infantil sem pedir autorização. Adicionalmente, o parâmetro -force pode ser adicionado para apagar ficheiros escondidos ou apenas de leitura.

Usando o comando -Force para apagar ficheiros à força

Usando o comando PowerShell para apagar todos os ficheiros à força

Remove-Item -Caminho “C:\dotnet-helpers*.*” -Force

1
1
1
2014-11-20 21:28:24 +0000

Experimente isto usando o PowerShell. Neste exemplo quero apagar todos os ficheiros .class:

Get-ChildItem '.\FOLDERNAME' -include *.class -recurse | foreach ($_) {remove-item $_.FullName}
1
1
1
2015-05-18 11:30:46 +0000

Eliminar todos os ficheiros do directório e subdirectórios actuais mas deixando a estrutura de pastas.

(/Q) switch é para perguntar ao utilizador se ele está ok para eliminar

Cautela : experimente sem o /Q para ter a certeza que não está a eliminar nada de precioso.

del /S * /Q
1
1
1
2016-10-12 20:45:27 +0000

Esta é a maneira mais fácil IMO

PowerShell aberta, navegar para o directório (cd), THEN

ls -Recurse * | rm

(Poof) tudo desapareceu…

Se quiser apagar com base numa extensão específica

ls -Recurse *.docx | rm

ls está a listar o directório

-Recurse é uma bandeira a dizer à PowerShell para ir a qualquer subdirectório

* diz tudo

*.doc tudo com . extensão doc

| alimenta a saída da esquerda para a direita

rm apaga

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

1
1
1
2015-03-16 09:12:32 +0000
  1. No Windows Explorer seleccione o diretório raiz que contém todos os ficheiros e pastas.

  2. Procure por *

  3. Ordenar por tipo (todas as pastas estarão no topo e todos os ficheiros listados por baixo)

  4. Seleccione todos os ficheiros e prima Apagar.

Isto irá apagar todos os ficheiros e preservar a estrutura do directório.

0
0
0
2020-03-01 06:34:32 +0000

Podemos apagar todos os ficheiros das pastas e respectivas sub-pastas através do comando abaixo.

Get-ChildItem -Recurse -Path 'D:\Powershell Practice' |Where-Object{$_.GetType() -eq [System.IO.FileInfo]} |Remove-Item
0
0
0
2020-02-04 17:43:55 +0000

Com Powershell 5.1:


$extensions_list = Get-ChildItem -Path 'C:\folder_path 

* * * 


Remove todos os itens que não são Directório. 

$extension.FullName = Item Path 


$extension.Attributes = Item Type ( Directório ou Arquivo ) -Recurse

foreach ( $extension in $extensions_list) {

    if ($extension.Attributes -notlike "Directory") {

        Remove-Item $extension.FullName  
    }
}

Remove todos os itens que não são Directório.

$extension.FullName = Item Path

$extension.Attributes = Item Type ( Directório ou Arquivo )

-1
-1
-1
2018-10-14 14:59:48 +0000

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” -Recurse