Via CMD Dateien in Ordner sortieren
Hallo zusammen,
ich habe in einem Ordner sehr viele Dateien mit gleichem Namen die sich nur am Ende durch eine Zahl unterscheiden.
zB.
Bild 1.*
Bild 2.*
Bild 3.*
Bilder 1.*
Bilder 2.*
Bilder 3.*
Ich möchte diese via CMD in einen Ordner verschieben der den Namen der Dateinen trägt aber ohne die Zahl am Ende der Datei. Also soll die CMD einen Ordner erstellen der z.B. "Bild" heißt und alle Dateien die mit Bild beginnen dort hinein verschoben werden. Und das ganze natürlich auch für Bilder.
Ich hoffe Ihr könnt meinen Ausführungen folgen und mir bei der Lösung meiner Aufgabe behilflich sein.
Mit freundlichen Grüßen der tkt
ich habe in einem Ordner sehr viele Dateien mit gleichem Namen die sich nur am Ende durch eine Zahl unterscheiden.
zB.
Bild 1.*
Bild 2.*
Bild 3.*
Bilder 1.*
Bilder 2.*
Bilder 3.*
Ich möchte diese via CMD in einen Ordner verschieben der den Namen der Dateinen trägt aber ohne die Zahl am Ende der Datei. Also soll die CMD einen Ordner erstellen der z.B. "Bild" heißt und alle Dateien die mit Bild beginnen dort hinein verschoben werden. Und das ganze natürlich auch für Bilder.
Ich hoffe Ihr könnt meinen Ausführungen folgen und mir bei der Lösung meiner Aufgabe behilflich sein.
Mit freundlichen Grüßen der tkt
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 294089
Url: https://administrator.de/forum/via-cmd-dateien-in-ordner-sortieren-294089.html
Ausgedruckt am: 18.04.2025 um 06:04 Uhr
10 Kommentare
Neuester Kommentar
Hallo tkt,
wie viel Aufwand man in Batchscript treiben muss, um die Dateinamen in ihre Bestandteile zu zerlegen, hängt sehr davon ab, wie die Dateinamen genau aufgebaut sind.
Gruß
Friemler
wie viel Aufwand man in Batchscript treiben muss, um die Dateinamen in ihre Bestandteile zu zerlegen, hängt sehr davon ab, wie die Dateinamen genau aufgebaut sind.
- Ist der erste Namensteil immer durch ein Leerzeichen von der Zahl getrennt?
- Kann der erste Namensteil auch Leerzeichen und/oder Ziffern enthalten?
Gruß
Friemler

Powershell:
Gruß jodel32
$quelle = 'c:\quelle'
$ziel = 'c:\ziel'
gci $quelle -recurse | ?{!$_.PSisContainer} | %{
$dest = "$ziel\$($_.Basename -replace '(.*?)[\s\d]*$','$1')"
if(!(Test-Path $dest)){md $dest}
move-item $_.Fullname -destination $dest
}
Gruß jodel32

Dieses erstellt für jede Datei einen Ordner also Bild 1, Bild 2, Bild 3, Bilder 1, Bilder 2, Bilder 3,
Falsch, mein Skript erstellt nur Ordner mit Namen ohne die Zahlen am Ende ...und schiebt die jeweilig zugehörigen Files dort rein ...

Du hast meinen Code in einer früheren Version kopiert, ich hatte den Regex kurz hinterher nochmal korrigiert.

Kann ich nicht bestätigen klappt hier einwandfrei!
Zeile 4 muss exakt so lauten:
Zeile 4 muss exakt so lauten:
$dest = "$ziel\$($_.Basename -replace '(.*?)[\s\d]*$','$1')"

Zitat von @tkt2208:
Muss ich immer eine Quelle und Ziele angeben oder ist es auch möglich das immer der Quell und Zielpfad das Verzeichnis ist in dem die Powershell Datei liegt und gestartet wird ?
Nein natürlich nicht, das war ja nur deinem Verständnis halber so gestaltet.Muss ich immer eine Quelle und Ziele angeben oder ist es auch möglich das immer der Quell und Zielpfad das Verzeichnis ist in dem die Powershell Datei liegt und gestartet wird ?
In dem Fall so, das Skript selber muss dann ja vom Verschieben ausgenommen werden (-Exclude *.ps1)
$path = $PSScriptRoot
gci $path -recurse -Exclude *.ps1 | ?{!$_.PSisContainer} | %{
$dest = "$path\$($_.Basename -replace '(.*?)[\s\d]*$','$1')"
if(!(Test-Path $dest)){md $dest}
move-item $_.Fullname -destination $dest
}
Wichtiger Hinweis: Wenn noch Powershell Version 2 benutzt wird, muss Zeile 1 so lauten:
$path = Split-Path $MyInvocation.MyCommand.Definition -Parent