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-Key: 633060

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

Printed on: April 23, 2024 at 14:04 o'clock

Member: Xolger
Xolger Dec 18, 2020 at 11:59:31 (UTC)
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
Mitglied: 146707
Solution 146707 Dec 18, 2020 updated at 12:14:03 (UTC)
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
    }
}
Member: andre-xs
andre-xs Dec 18, 2020 updated at 12:37:39 (UTC)
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...
Member: andre-xs
andre-xs Dec 18, 2020 at 12:38:47 (UTC)
Goto Top
Danke primal, schaue ich mir mal an. Das ist Powershell und nicht Batch, oder?
Mitglied: 146707
146707 Dec 18, 2020 updated at 12:56:46 (UTC)
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 🐟
Member: erikro
erikro Dec 18, 2020 at 15:13:37 (UTC)
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
Mitglied: 146707
146707 Dec 18, 2020 at 15:19:34 (UTC)
Goto Top
Zitat von @erikro:
Nanana, der Freitag ist noch lange nicht vorbei. face-wink
Da kannst du recht haben face-big-smile.
Member: andre-xs
andre-xs Dec 26, 2020 at 08:40:26 (UTC)
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.