Powershell Solo-Ordner eine Ebene verschieben
Hallo,
In einer riesigen Ordnerstruktur, möchte ich ab Unterordner 2, alle Folgenden Unterordner, die auf der selben Ebene keine Dateien haben, eine Ebene hoch schieben.
Sodass, ab Unterordner 2, entweder
Variante 1 OK Ordner mit Dateien darin + Dateien auf gleicher Ebene:
PFAD\OrdnerA\OrdnerB\DateienA &
PFAD\OrdnerA\DateienB
Variante 2 OK Keine Ordner, aber Dateien:
PFAD\DateienA ohne weitere Ordner
Variante 3 NICHT OK Unterordner mit Dateien darin, aber keine Dateien auf gleicher Ebene:
PFAD\OrdnerA\OrdnerB\DateienA
Variante 4 Prüfen(rausschreiben) mehr als 1 Unterordner mit Dateien darin, aber keine Dateien auf gleicher Ebene:
PFAD\OrdnerA\OrdnerB\DateienA &
PFAD\OrdnerA\OrdnerC\DateienB
Also keine Solo-Ordner alleine ohne Dateien auf gleicher Ebene nach Ordner A, der Inhalt soll in diesem Fall eine Ebene hoch:
PFAD\OrdnerA\DateienA
Ich habe noch keine Vorschläge dazu gefunden und kann es mir bisher nicht in simplem Code vorstellen.
Danke für Vorschläge.
In einer riesigen Ordnerstruktur, möchte ich ab Unterordner 2, alle Folgenden Unterordner, die auf der selben Ebene keine Dateien haben, eine Ebene hoch schieben.
Sodass, ab Unterordner 2, entweder
Variante 1 OK Ordner mit Dateien darin + Dateien auf gleicher Ebene:
PFAD\OrdnerA\OrdnerB\DateienA &
PFAD\OrdnerA\DateienB
Variante 2 OK Keine Ordner, aber Dateien:
PFAD\DateienA ohne weitere Ordner
Variante 3 NICHT OK Unterordner mit Dateien darin, aber keine Dateien auf gleicher Ebene:
PFAD\OrdnerA\OrdnerB\DateienA
Variante 4 Prüfen(rausschreiben) mehr als 1 Unterordner mit Dateien darin, aber keine Dateien auf gleicher Ebene:
PFAD\OrdnerA\OrdnerB\DateienA &
PFAD\OrdnerA\OrdnerC\DateienB
Also keine Solo-Ordner alleine ohne Dateien auf gleicher Ebene nach Ordner A, der Inhalt soll in diesem Fall eine Ebene hoch:
PFAD\OrdnerA\DateienA
Ich habe noch keine Vorschläge dazu gefunden und kann es mir bisher nicht in simplem Code vorstellen.
Danke für Vorschläge.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 667328
Url: https://administrator.de/forum/powershell-solo-ordner-eine-ebene-verschieben-667328.html
Ausgedruckt am: 25.12.2024 um 20:12 Uhr
4 Kommentare
Neuester Kommentar
Zitat von @Marabunta:
Ich habe noch keine Vorschläge dazu gefunden und kann es mir bisher nicht in simplem Code vorstellen.
Ich habe noch keine Vorschläge dazu gefunden und kann es mir bisher nicht in simplem Code vorstellen.
Hi,
für spezifische Probleme gibt es selten die fertige Umsetzung.
Zerlege deine Aufgabe in einfache Schritte.
- wie prüfe ich ob ein Ordner vorhanden und leer ist?
- wie verschiebe ich Dateien?
- wo kommen Schleifen zum Einsatz?
- wo wird Rekursion benötigt?
- wie würde ich es in Einzelschritten machen? --> Programm Ablauf Plan
- oder mit freien Worten
Daraus dann ableiten wo Schleifen, Rekursion, Hilfsvariablen etc. zum Einsatz kommen und los bauen.
VG
Schau dir mal System.IO.Directory.GetDirectories an.
Hir ein kleiner Denkanstoß:
https://stackoverflow.com/questions/14970692/powershell-io-directory-fin ...
Alles andere hat H41mSh1C0R schon geschrieben.
Files und Folder verschieben geht mit Move-Item.
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...
Aber besser du würdest Robocopy verwenden. Das kann nämlich auch ShadowCopy und bricht nicht ab bei Zugriffsproblemen. Außerdem schon onBoard:
https://docs.microsoft.com/en-us/windows-server/administration/windows-c ...
Grüße!
Hir ein kleiner Denkanstoß:
https://stackoverflow.com/questions/14970692/powershell-io-directory-fin ...
Alles andere hat H41mSh1C0R schon geschrieben.
Files und Folder verschieben geht mit Move-Item.
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...
Aber besser du würdest Robocopy verwenden. Das kann nämlich auch ShadowCopy und bricht nicht ab bei Zugriffsproblemen. Außerdem schon onBoard:
https://docs.microsoft.com/en-us/windows-server/administration/windows-c ...
Grüße!
Servus.
Mal was für dich als Grundlage auf der du aufbauen kannst soweit ich das verstanden habe
Grüße Uwe
Mal was für dich als Grundlage auf der du aufbauen kannst soweit ich das verstanden habe
$root = 'D:\Pfad'
ls $root -Directory | ?{!(ls $_.FullName -File)} | %{
if ((ls $_.FullName -Directory).Count -ge 2){
write-host "Ordner '$($_.Fullname)' hat mehr als einen Unterordner." -F Yellow
}else{
ls "$($_.FullName)\*\*" -File | move-item -Destination $_.FullName -Verbose
}
}