Powershell, um alle Dateien mit einer bestimmten Dateierweiterung zu löschen

17731
user2676140

Ich möchte ein Verzeichnis scannen (es gibt keine Subs) und alle Dateien mit einer Erweiterung löschen. .avi Ich habe diese Syntax ausprobiert, aber es werden keine Fehler ausgegeben und keine Dateien werden gelöscht. Dies ist der Code, den ich ausprobiert habe

get-childitem 'C:\Users\ramrod\Desktop\Firefly' -include *.avi | foreach ($_) 

Was muss geändert werden, um alle .aviDateien aus dem Ordner zu löschen ?

7
Was hindert Sie daran, `rm * .avi` zu verwenden? (Ja, das ist eine gültige PowerShell-Syntax, da `rm` ein Alias ​​von` del` ist. GiantTree vor 7 Jahren 3
Technisch gesehen sind `rm` und` del` beide Aliasnamen des Cmdlets `Remove-Item`. root vor 7 Jahren 1

4 Antworten auf die Frage

6
GiantTree

Verwenden Sie del *.<extension>oder einen seiner Aliase (z. B. rmwenn Sie eher an Bash gewöhnt sind).

Es wäre also del *.avi, alle Dateien zu löschen, die im .aviaktuellen Arbeitsverzeichnis enden .

Verwenden Sie del <directory>\*.<extension>Dateien in andere Verzeichnisse zu löschen.

Um dies rekursiv zu tun, führen Sie folgendes aus: ls * .avi -Recurse | foreach ` Kolob Canyon vor 7 Jahren 5
2
David Metcalfe

Angenommen, die bevorzugte Methode zum Öffnen einer Powershell-Instanz in dem Verzeichnis wäre eine generische Version wie folgt:

Get-ChildItem *.avi | foreach { Remove-Item -Path $_.FullName } 

Für eine verzeichnisspezifische Version:

Get-ChildItem -Path 'C:\Users\ramrod\Desktop\Firefly' *.avi | foreach { Remove-Item -Path $_.FullName } 

Fügen Sie in hinzu -Recurse, Get-ChildItemum alle enthaltenen Ordner zu beeinflussen.

Beispiel:

Get-ChildItem *.avi -Recurse | foreach { Remove-Item -Path $_.FullName } 
0
guest-vm

Angenommen, es gibt mehrere Textdateien im aktuellen Verzeichnis.
dir * -include *.txt& dir *.txtArbeit wie erwartet, aber dir -include *.txtnichts. Der Grund ist im Stack Overflow gut erklärt .

Korrekturbefehl:
dir 'C:\Users\ramrod\Desktop\Firefly\*.avi' | foreach

0
visionmn2

Das hat es endlich für mich getan - alles oben und nada ausprobiert.

get-childitem "<drive>:\<folder>" -recurse -force -include *.<ext> | remove-item -force 

sicher, dass zwei Kräfte nicht erforderlich sind, aber das ist, was funktioniert, also halte ich mich daran.