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

Alle Dateien aus einem Ordner und seinen Unterordnern löschen

Ich möchte alle Dateien aus einer Ordnerstruktur entfernen, so dass eine leere Ordnerstruktur übrig bleibt.

Kann dies entweder im Batch- oder VBScript -Scripting erreicht werden?

Ich habe einen sehr einfachen Batch-Befehl versucht, aber dazu musste der Benutzer das Löschen jeder Datei erlauben. Das war keine geeignete Lösung, da es viele hundert Dateien gibt und diese Zahl mit der Zeit massiv ansteigen wird.

Was können Sie vorschlagen?

Antworten (13)

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

Dies kann mit PowerShell erreicht werden:

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

Dieser Befehl ruft jedes untergeordnete Element in $path ab, führt die Löschmethode für jedes Element aus und ist ziemlich schnell. Die Ordnerstruktur bleibt intakt.

Wenn Sie möglicherweise Dateien ohne Erweiterung haben, verwenden Sie stattdessen

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

.

Es scheint, dass der Parameter -File möglicherweise nach PowerShell v2 hinzugefügt wurde. Wenn das der Fall ist, dann sollte

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

den Trick für Dateien mit Erweiterung ausführen.

Wenn es nicht funktioniert, prüfen Sie, ob Sie eine aktuelle Version von Powershell

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

Kurz und Suite PowerShell. Bin nicht sicher, mit welcher niedrigsten PS-Version es funktioniert.

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

Sie können dies mit dem Befehl del tun:

dir C:\folder
del /S *

Der Schalter /S dient dazu, nur Dateien rekursiv zu löschen.

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

Wenn Sie zwischen den Zeilen Ihrer ursprünglichen Frage lesen, kann ich Ihnen eine alternative BATCH-Codezeile anbieten, die Sie verwenden können. Diese bewirkt, dass beim Ausführen nur Dateien gelöscht werden, die älter als 60 Tage sind. Auf diese Weise können Sie dies in eine geplante Aufgabe packen, und wenn sie ausgeführt wird, löscht sie die überflüssigen Dateien, die Sie nicht brauchen, anstatt das gesamte Verzeichnis zu vernichten. Sie können 60 bis 5 Tage oder sogar 1 Tag ändern, wenn Sie es wünschen. Dabei werden keine Ordner gelöscht.

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

Verwendung von PowerShell:

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

Verwenden Sie PowerShell, um eine einzelne Datei oder einen Ordner zu löschen. Bevor Sie den Befehl Delete in der PowerShell ausführen, müssen wir sicherstellen, dass Sie beim Server oder PC mit einem Konto angemeldet sind, das vollen Zugriff auf die zu löschenden Objekte hat. Mit Beispiel: http://dotnet-helpers.com/powershell-demo/how-to-delete-a-folder-or-file-using-powershell/

Verwenden von PowerShell commnads zum Löschen einer Datei

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

Der obige Befehl führt die Datei “DummyfiletoDelete.txt” aus und löscht die Datei “DummyfiletoDelete.txt”, die sich im Speicherort “C:\dotnet-helpers” befindet.

Verwenden von PowerShell-Commnads zum Löschen aller Dateien

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

Verwenden von PowerShell-Commnads zum Löschen aller Dateien und Ordner

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

-recurse drillt auf und findet viele weitere Dateien. Der Parameter –recurse ermöglicht es PowerShell, alle untergeordneten Elemente zu entfernen, ohne um Erlaubnis zu fragen. Zusätzlich kann der Parameter -force hinzugefügt werden, um versteckte oder schreibgeschützte Dateien zu löschen

Verwendung des Befehls -force zum erzwungenen Löschen von Dateien

Verwendung des PowerShell-Befehls zum erzwungenen Löschen aller Dateien

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

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

Versuchen Sie dies mit PowerShell. In diesem Beispiel möchte ich alle .class-Dateien löschen:

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

Der Schalter

(/Q) dient dazu, den Benutzer zu fragen, ob er

löschen darf Vorsicht : versuchen Sie es ohne den Schalter /Q, um sicherzustellen, dass Sie nichts Wertvolles löschen.

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

Dies ist der einfachste Weg IMO

PowerShell zu öffnen, navigieren Sie zum Verzeichnis (cd), THEN

ls -Recurse * | rm

(Poof) alles ist weg…

Wenn Sie basierend auf einer bestimmten Erweiterung löschen möchten

ls -Recurse *.docx | rm

ls listet das Verzeichnis auf

-Recurse ist ein Flag, das PowerShell anweist, in beliebige Unterverzeichnisse zu gehen

* sagt alles

*.doc alles mit . doc-Erweiterung

| füttert die Ausgabe von links nach rechts

rm löscht

Alle anderen Antworten scheinen dies verwirrender zu machen als nötig.

1
1
1
2015-03-16 09:12:32 +0000
  1. Wählen Sie im Windows Explorer das Stammverzeichnis, das alle Dateien und Ordner enthält:

  2. Suchen Sie nach *

  3. Sortieren nach Typ (Alle Ordner stehen oben und alle Dateien darunter)

  4. Wählen Sie alle Dateien aus und drücken Sie auf Löschen.

Dadurch werden alle Dateien gelöscht und die Verzeichnisstruktur bleibt erhalten.

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

Wir können alle Dateien in den Ordnern und ihren Unterordnern löschen, indem wir den folgenden Befehl verwenden:

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

Mit Powershell 5.1:


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


* * * * 


Es werden alle Iterationen entfernt, die nicht zum Verzeichnis gehören. 

$extension.FullName = Objektpfad 

$extension.Attributes = Objekttyp ( Verzeichnis oder Archiv ) -Recurse

foreach ( $extension in $extensions_list) {

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

        Remove-Item $extension.FullName  
    }
}

Es werden alle Iterationen entfernt, die nicht zum Verzeichnis gehören.

$extension.FullName = Objektpfad

$extension.Attributes = Objekttyp ( Verzeichnis oder Archiv )

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

Als Ergänzung zu den obigen Antworten besteht eigentlich keine Notwendigkeit, das Get-Childitem zu verwenden und das Ergebnis in den obigen Antworten an die Pipeline zu übergeben, da das Schlüsselwort -Include im Remove-Item-Befehl enthalten ist

Man kann einfach:

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