Powershell zum Löschen aller Dateien mit einer bestimmten Dateierweiterung

Powershell zum Löschen aller Dateien mit einer bestimmten Dateierweiterung

Ich möchte ein Verzeichnis scannen (es gibt keine Unterverzeichnisse) und alle Dateien 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 muss geändert werden, um alle .aviDateien aus dem Ordner zu löschen?

Antwort1

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

Das bedeutet, del *.avidass alle Dateien .aviim aktuellen Arbeitsverzeichnis gelöscht werden müssen, die mit enden.

del <directory>\*.<extension>Wird zum Löschen von Dateien in anderen Verzeichnissen verwendet .


WARNUNG:Beide löschen andere Erweiterungen del *.<extension>, del <directory>\*.<extension>die dem Muster entsprechen. Diese Dateien werden nicht in den Papierkorb verschoben.

Beispiel: del *.doc*löscht *.doc, *.docmUnd *.docx. Das del <directory>\*.<extension>funktioniert ähnlich.

Antwort2

Ausgehend von der bevorzugten Methode zum Öffnen einer Powershell-Instanz im Verzeichnis würde eine generische Version wie folgt aussehen:

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 -Recursees hinzu Get-ChildItem, um alle enthaltenen Ordner zu beeinflussen.

Beispiel:

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

Antwort3

DerGegenstand entfernenDas Cmdlet sollte alles sein, was Sie brauchen. Geben Sie einfach den Stammordner an, in dem die AVI-Dateien vorhanden sind, und übergeben Sie den -RecurseParameter zusammen mit einem Filter:

Remove-Item 'C:\Users\ramrod\Desktop\Firefly\*' -Recurse -Include *.avi

Dies sollte schneller ausgeführt werden, als die Dateien über zu suchen und jede einzelne Get-ChildItemaufzurufen .Remove-Item

  • Durch Hinzufügen des -WhatIfSchalters werden die Elemente aufgelistet, die gelöscht werden würden, der eigentliche Löschvorgang wird jedoch nicht durchgeführt.
  • Wenn Sie den -ConfirmSchalter hinzufügen, werden Sie vor dem Löschen jeder Datei gefragt. Dies ist sicherer für Personen, die sich mitPower Shell.

Antwort4

Das hat es bei mir endlich geholfen – habe alles oben genannte versucht und nichts.

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

sicher, dass Two-Force nicht erforderlich ist, aber es funktioniert, also bleibe ich dabei.

verwandte Informationen