Ich möchte ein Verzeichnis scannen (es gibt keine Subs) und eine Datei mit der Erweiterung löschen. .avi
Ich habe diese Syntax ausprobiert, aber es werden keine Fehler ausgegeben und keine Dateien gelöscht. Dies ist der Code, den ich ausprobiert habe
get-childitem 'C:\Users\ramrod\Desktop\Firefly' -include *.avi | foreach ($_) {remove-item $_.fullname}
Was sollte geändert werden, um alle .avi
Dateien aus dem Ordner zu löschen ?
powershell
powershell-5.0
user2676140
quelle
quelle
rm *.avi
? (Ja, das ist eine gültige PowerShell-Syntax, darm
es sich um einen Alias von handeltdel
.rm
unddel
sind beide Aliase desRemove-Item
Cmdlets.Antworten:
Verwenden Sie
del *.<extension>
oder einen seiner Aliase (wierm
, wenn Sie eher daran gewöhnt sind, zu schlagen).Es wäre also
del *.avi
, alle Dateien zu löschen, die im.avi
aktuellen Arbeitsverzeichnis enden .Verwenden Sie
del <directory>\*.<extension>
diese Option, um Dateien in anderen Verzeichnissen zu löschen.quelle
ls *.avi -Recurse | foreach {rm $_}
Unter der Annahme der bevorzugten Methode zum Öffnen einer Powershell-Instanz im Verzeichnis wäre eine generische Version wie folgt:
Für eine verzeichnisspezifische Version:
Hinzufügen
-Recurse
zuGet-ChildItem
, um alle enthaltenen Ordner zu beeinflussen.Beispiel:
quelle
Das
Remove-Item
Commandlet sollte alles sein, was Sie brauchen. Übergeben Sie einfach den Stammordner, in dem sich die AVI-Dateien befinden, und übergeben Sie dasrecurse
Flag zusammen mit einem Filter:Dies sollte schneller ausgeführt werden, als die Dateien über zu finden
Get-ChildItem
undRemove-Item
für jede aufzurufen .Wenn Sie den
-WhatIf
Schalter hinzufügen, werden Sie aufgefordert, jede Datei zu löschen. Dies ist sicherer für Benutzer, die mit PowerShell weniger vertraut sind.quelle
-WhatIf
Wechsel ist nicht erforderlich. Ich habe diese Antwort bearbeitet. +1 DasRemove-Item
Commandlet ist alles, was Sie brauchen, und läuft schneller als die aktuell akzeptierte Antwort.-whatif
zu überprüfen, ob Sie nur die Dateien entfernen, die Sie entfernen möchten. Und vor allem, wenn Sie Personen mit unbekanntem technischen Fachwissen einen Löschbefehl anbieten. Am besten die Stützräder eingeschaltet lassen.Angenommen, das aktuelle Verzeichnis enthält mehrere Textdateien.
dir * -include *.txt
&dir *.txt
arbeite wie erwartet aberdir -include *.txt
gebe nichts. Der Grund ist im Stapelüberlauf gut erklärt .Korrigierter Befehl:
dir 'C:\Users\ramrod\Desktop\Firefly\*.avi' | foreach {del $_}
quelle
Das hat es endlich für mich getan - alles oben versucht und nada.
Sicher, zwei Kräfte sind nicht erforderlich, aber genau das funktioniert, also bleibe ich dabei.
quelle
Versuche dies
quelle