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

Cancellare tutti i file da una cartella e le sue sottocartelle

Voglio rimuovere tutti i file da una struttura di cartelle, quindi mi rimane una struttura di cartelle vuota.

Questo può essere ottenuto sia in batch che in VBScript scripting?

Ho provato un comando batch molto semplice, ma questo richiedeva che l'utente permettesse la cancellazione di ogni file. Questa non è stata una soluzione adatta, dato che ci sono molte centinaia di file e questo aumenterà enormemente nel tempo.

Cosa può suggerire?

Risposte (13)

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

Questo può essere realizzato usando PowerShell :

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

Questo comando ottiene ogni elemento figlio in $path, esegue il metodo di cancellazione su ognuno di essi, ed è abbastanza veloce. La struttura delle cartelle viene lasciata intatta.

Se si possono avere file senza estensione, usare

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

.

Sembra che il parametro -File sia stato aggiunto dopo PowerShell v2. Se è così, allora

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


Dovrebbe fare il trucco per i file che hanno un'estensione. 


Se non funziona, [ controllare se si dispone di una versione aggiornata di Powershell ](https://stackoverflow.com/questions/38203109/get-childitem-a-parameter-cannot-be-found-that-matches-parameter-name-directo)
29
29
29
2017-11-02 17:21:27 +0000

Corto e suite PowerShell. Non sono sicuro di quale sia la versione più bassa di PS con cui funzionerà.

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

È possibile farlo con il comando del:

dir C:\folder
del /S *

L'interruttore /S serve a cancellare solo i file in modo ricorsivo.

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

Leggendo tra le righe della vostra domanda originale posso offrire una linea di codice BATCH alternativa che potete utilizzare. Ciò che questo farà quando viene eseguito è solo cancellare i file che hanno più di 60 giorni. In questo modo è possibile inserirla in un'attività pianificata e quando viene eseguita elimina i file in eccesso di cui non si ha bisogno, piuttosto che eliminare l'intera directory. È possibile cambiare da 60 a 5 giorni o anche 1 giorno se lo si desidera. Questo non cancella le cartelle.

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

Utilizzo di PowerShell:

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

Utilizzare PowerShell per cancellare un singolo file o una cartella. Prima di eseguire il comando Delete in powershell dobbiamo assicurarci che siate connessi al server o al PC con un account che abbia pieno accesso agli oggetti che volete cancellare. Con Esempio: http://dotnet-helpers.com/powershell-demo/how-to-delete-a-folder-or-file-using-powershell/ &003

Usare i comandi PowerShell per cancellare un file

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

Il comando di cui sopra eseguirà ed eliminerà il file “DummyfiletoDelete.txt” che si trova all'interno della posizione “C:\dotnet-helpers”.

Usare le caselle di comando PowerShell per eliminare tutti i file

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

Usando i comandi PowerShell per cancellare tutti i file e le cartelle

Remove-Item -Path “C:\ \ \ \ \ \ }” -recurse

-recurse trapana e trova molti altri file. Il parametro –recurse permetterà a PowerShell di rimuovere qualsiasi elemento figlio senza chiedere il permesso. Inoltre, il parametro -force può essere aggiunto per cancellare file nascosti o di sola lettura.

Uso del comando -Force per cancellare file con forza

Uso del comando PowerShell per cancellare tutti i file con forza

Remove-Item -Path “C:\ \ \ *.*” -Force

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

Provatelo usando PowerShell. In questo esempio voglio cancellare tutti i file .class:

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

Cancellare tutti i file dalla directory corrente e dalle sottodirectory, ma lasciando la struttura delle cartelle.

(/Q) è per chiedere all'utente se può cancellare

Attenzione : provare senza il /Q per assicurarsi di non cancellare nulla di prezioso.

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

Questo è il modo più semplice IMO

Open PowerShell, navigare verso la directory (cd), THEN

ls -Recurse * | rm

(Poof) tutto è andato…

Se volete cancellare in base ad una specifica estensione

ls -Recurse *.docx | rm

ls è l'elenco della directory

-Recurse è una bandiera che dice a PowerShell di andare in qualsiasi sub directory

* dice tutto

*.doc tutto con . doc estensione

| alimenta l'uscita da sinistra a destra

rm cancella

Tutte le altre risposte appaiono per rendere questo più confuso del necessario.

1
1
1
2015-03-16 09:12:32 +0000
    1. In Esplora risorse di Windows selezionare la directory principale contenente tutti i file e le cartelle. Cerca *
    1. Ordina per tipo (Tutte le cartelle saranno in alto e tutti i file elencati in basso)
    1. Selezionare tutti i file e premere Cancella.

Questo cancellerà tutti i file e manterrà la struttura delle directory.

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

Possiamo cancellare tutti i file nelle cartelle e nella sua sottocartella utilizzando il comando seguente.

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

Con Powershell 5.1:


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


* * * * 


Rimuove tutti gli itens che non sono Directory. 


$extension.FullName = Percorso dell'articolo 


$extension.Attributes = Tipo di articolo ( Directory o Archivio ) -Recurse

foreach ( $extension in $extensions_list) {

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

        Remove-Item $extension.FullName  
    }
}

Rimuove tutti gli itens che non sono Directory.

$extension.FullName = Percorso dell'articolo

$extension.Attributes = Tipo di articolo ( Directory o Archivio )

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

Come complemento alle risposte di cui sopra, in realtà non c'è bisogno di usare il Get-Childitem e passare il risultato alla pipeline nelle risposte di cui sopra, perché la parola chiave -Includi è inclusa nel comando Remove-Item

Si può semplicemente:

Remove-Item -Includi “.” “C:\Temp” -Recurse