Rekursives Löschen von Dateien, die dem Dateinamen entsprechen (PowerShell-Skript)

4

Ich habe meine alten Batch-Dateien mit anständigem Erfolg in Powershell-Skripte konvertiert. Allerdings ... Ich kann nicht genau herausfinden, was in diesem Fall der beste und effizienteste Weg wäre, dies zu tun.

Hier ist das Batch-Skript:

attrib -h -s *.* /s
del /s folder.jpg
del /s albumart*.jpg
del /s desktop.ini
@pause

Im Grunde geht es durch meine Musikordner und Unterordner und löscht alle Junk-Dateien, die dort sein könnten (ich habe sie in meinem Musikordner).

Würde so etwas funktionieren (nach schnellem Test hat es aber nicht geklappt ...)?

$currentfolder = split-path -parent $MyInvocation.MyCommand.Definition
Get-ChildItem -Path $currentfolder -Include folder.jpg, albumart*.jpg, desktop.ini -File -Recurse | foreach { $_.Delete()}

Es wäre auch schön, gelöschte Dateinamen wiederzugeben.

EDIT: Ich füge hier die voll funktionsfähige Lösung hinzu:

$currentfolder = split-path -parent $MyInvocation.MyCommand.Definition

Get-ChildItem -Path $currentfolder -Include folder.jpg, albumart*.jpg, desktop.ini -File -Recurse | foreach { echo "Deleting: $_" ; $_.Delete()}
Tup
quelle
1
Dies ist eine Frage-und-Antwort-Site. Bitte fügen Sie Ihre Lösung nicht der Frage selbst hinzu. Benutzer dürfen und werden sogar ermutigt, ihre eigenen Fragen zu beantworten, und Sie können Ihre Antwort sogar selbst akzeptieren, wenn Sie möchten. Bearbeiten Sie also Ihre Frage und verschieben Sie die Lösung in eine richtige Antwort.
Karan
Es war nicht meine Lösung, aber wenn ich nicht blind bin, gibt es den Beitrag nicht mehr, da ich nur eine Antwort sehen kann. Und diese Antwort habe ich akzeptiert. Machen Sie bitte keine elitären Annahmen.
Tup
@Tup: Könnten Sie bitte eine Antwort validieren? Meins oder ein anderes, das du selbst gepostet hast? Dies wird bei zukünftigen Suchen hilfreich sein.
Ob1lan
1
@Tup: Unabhängig davon, ob es sich um Ihre eigene Lösung handelt oder ob Sie nur kopiert haben, was eine andere Person in einer jetzt gelöschten Antwort geschrieben hat, der Punkt ist, dass die Lösung nicht zur Frage gehört. Außerdem war es ein einfacher Vorschlag, wie diese Seite aufgebaut ist, und keine sogenannte "elitäre Annahme". Nur weil eine von Ihnen akzeptierte Antwort aus irgendeinem Grund gelöscht wurde, heißt das nicht, dass ihr Inhalt der Frage hinzugefügt werden soll, verstanden?
Karan,

Antworten:

5

Auch wenn Ihr zweites Skript funktioniert, ist dieses einfacher zu verstehen und möglicherweise in "Better PowerShell" geschrieben:

$currentfolder = Get-Location
Get-ChildItem -Path $currentfolder -File -Include folder.jpg,albumart*.jpg,desktop.ini -Recurse | Remove-Item -Force -Verbose

Hoffe das hilft !

Ob1lan
quelle
Sie könnten es tatsächlich eine Zeile machen. Get-ChildItem -Path $(Get-Location) -File -Include folder.jpg,albumart*.jpg,desktop.ini -Recurse | Remove-Item -Force -Verbose
Colin Su