andre-xs
Goto Top

Dateien in eine Verzeichnisebene höher verschieben (Batch oder Powershell)

Ich habe ein grosse Zahl an Dateien, die verschachtelt in Unterverzeichnissen liegen, in etwa so:
D:\Ebene1\Ordner1A\Ordner1B\Dateiname1.xls
D:\Ebene1\Ordner2A\Ordner2B\Dateiname2.xls
D:\Ebene1\Ordner3A\Ordner3B\Dateiname3.xls
usw.

Ich müsste die Dateien (Dateiname1.xls etc) aus dem Verzeichnis Ordner<x>B eine Ebene höher, also in Ordner<x>A verschieben. Optimalerweise dann auch gleich das dann leere Verzeichnis Ordner<x>B löschen, aber zur Not kann das auch bleiben.

Hinterher sollte es also so aussehen:
D:\Ebene1\Ordner1A\Dateiname1.xls
D:\Ebene1\Ordner2A\Dateiname2.xls
D:\Ebene1\Ordner3A\Dateiname3.xls
usw.

Die Ordner und Dateien haben sehr unterschiedliche Namen...

[Edit: ] Leider ist beides auch schon gemischt, d.h. in manchen Verzeichnissen liegen die Dateien schon in Ordner<x>A. Ein script müsste also prüfen, ob es ggf. ein Unterverzeichnis Ordner<x>B überhaupt gibt, und nur dann die darin enthaltene Datei verschieben.

Ist sowas leicht per Windows10 Batch-Datei (oder Powershell-Kommandozeile) möglich?

Viele Grüsse,
Andre

Content-ID: 633060

Url: https://administrator.de/contentid/633060

Ausgedruckt am: 14.11.2024 um 17:11 Uhr

Xolger
Xolger 18.12.2020 um 12:59:31 Uhr
Goto Top
Hallo Andre,

also bei dem Spiel mit dem prüfen bin ich raus.
Aber wenn du aus einem Unterordner in den übergeordneten Ordner alle Dateien verschieben willst dann geht es auf der Kommandozeile z.B. so:
move *.* ..\

Es kommt auch eine Abfrage, wenn eine Datei schon vorhanden ist.


Gruß
Xolger
146707
Lösung 146707 18.12.2020 aktualisiert um 13:14:03 Uhr
Goto Top
ls "D:\*\*\*\*.xls" -File | group DirectoryName | %{  
    $_.Group | mv -Destination $_.Group.Directory.Parent.Fullname -Verbose -Force
    if (!(ls $_.Name -File -Recurse)) {
        rm $_.Name -Force -Recurse -Verbose
    }
}
andre-xs
andre-xs 18.12.2020 aktualisiert um 13:37:39 Uhr
Goto Top
Danke Xolger, das Kommando kenne ich. Aber das müsste ich ja per Hand in jedem Verzeichnis machen. Das Problem ist, dass es jeweils nur um eine Datei geht, ich aber hunterte Verzeichnisse habe...
andre-xs
andre-xs 18.12.2020 um 13:38:47 Uhr
Goto Top
Danke primal, schaue ich mir mal an. Das ist Powershell und nicht Batch, oder?
146707
146707 18.12.2020 aktualisiert um 13:56:46 Uhr
Goto Top
Zitat von @andre-xs:
Das ist Powershell und nicht Batch, oder?
Damit gewinnst du heute definitiv den Preis für die goldene Freitagsfrage 🐟
erikro
erikro 18.12.2020 um 16:13:37 Uhr
Goto Top
Zitat von @146707:

Zitat von @andre-xs:
Das ist Powershell und nicht Batch, oder?
Damit gewinnst du heute definitiv den Preis für die goldene Freitagsfrage 🐟

Nanana, der Freitag ist noch lange nicht vorbei. face-wink
146707
146707 18.12.2020 um 16:19:34 Uhr
Goto Top
Zitat von @erikro:
Nanana, der Freitag ist noch lange nicht vorbei. face-wink
Da kannst du recht haben face-big-smile.
andre-xs
andre-xs 26.12.2020 um 09:40:26 Uhr
Goto Top
Vielen Dank, das hat funktioniert (Ja, in Powershell face-smile )

Allerdings sind die leeren Verzeichnisse nicht gelöscht worden, aber wie erwähnt, war das ja auch nicht so wichtig. Ist kein Problem, hab's jetzt so gelassen und es kann so bleiben.