Powershell Anfänger: Dateien in verschiedene Ordner verschieben

Seit ein paar Tagen setzte ich mich mit Powershell auseinander, nachdem ich die Microsoft Virutal Academy entdeckt habe. Mit einem MS Account ausgestattet (gibt’s kostenlos) hat man Zugriff auf eine ganze Menge von Trainings zu Microsoft Produkten für das Selbststudium. Da ich Powershell schon immer faszinierend fand, aber nie wirklich verstand, habe ich mich an Windows PowerShell 3.0 für Einsteiger gemacht und bin dort doch tatsächlich schon im 2. von 3 Teilen angekommen.

Im zweiten Teil scheitere ich allerdings an der Aufgabe eine Reihe von Dateien mit unterschiedlichen Dateierweiterungen (nehmen wir .txt, .tmp und .log) in dafür vorbereitete Verzeichnisse zu verschieben:

Verschieben Sie alle Dateien aus dem Übungsordner in die erstellten Unterordner.
Hinweis: Die Liste get-childitem des Ausgangordners umfasst nun auch die neu
erstellten Unterordner, diese müssen nun ausselektiert werden. Erzeugen Sie also
wiederum eine Liste aller Items (schauen Sie die Liste diesmal zunächst genau an).
Schränken Sie die Liste ein, der Vergleichsoperator(… .mode –notmatch „d“) kann
hierbei helfen. Dann brauchen Sie eine Schleife für die Liste, die nun nur noch Dateien
beinhaltet. Die Abschlussschleife ist dann wieder einfach: Finden Sie pro Objekt den
richtigen Zielordner anhand der Dateiendung und verschieben Sie die Datei in diesen
Ordner.

Die erzeugten Zielordner aus der Ausgabe von get-childitem habe ich noch problemlos hinbekommen mit

Da in der Aufgabenstellung von Schleifen die Rede ist, brauch ich wohl eine Kombination aus Foreach-Object und if Abfragen. Aber genau das bekomme ich nicht mehr hin.

Mein Spieleordner sieht so aus:

Nach einigem Überlegen bin ich zu folgendem Ansatz gekommen eine verschachtelte if Anweisung zu verwenden, hat aber nicht so wirklich funktioniert:

Für die ersten paar Treffer aus der ersten if Bedingung hat das ja noch getan(\o/) aber sobald eine andere Dateierweiterung von Foreach kommt, kracht es. Meine Vermutung ist ja, dass ich viel zu kompliziert denke. Aber selbst mit viel Nachdenken komme ich für heute nicht auf den richtigen Weg.

Mag jemand helfen? 🙂

Veröffentlicht in Powershell Getagged mit: ,
Ein Kommentar zu “Powershell Anfänger: Dateien in verschiedene Ordner verschieben
  1. alzdba sagt:

    Get-ChildItem -File | ForEach-Object {
    if ($_.Extension -eq „.log“) {move $_ .\.log -WhatIf}
    elseif ($_.Extension -eq „.tmp“) {Move-Item $_ .\.tmp -WhatIf}
    elseif ($_.Extension -eq „.txt“) {Move-Item $_ .\.txt -WhatIf}

    }

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*