Datei von einem Ordners alphabetisch sortiert in Unterordnern verschieben
Hallo,
Ich möchte von allen Dateien eines Ordner den ersten Buchstaben auslesen und mittel einer for-Schleife und if-Bedingungen die Dateien dann alphabetisch in Unterordner bzw. anderen Ordner verschieben, wenn diese dort nicht existiert.
zum Beispiel:
abc def - ghi.txt (erster Buchstabe ist A, wenn Datei dort nicht existiert, dann verschiebe in Ordner A)
CccDdd lll.jpg (erster Buchstabe ist C, wenn Datei dort nicht existiert, dann verschiebe in Ordner C)
123 jkf.txt (erster Buchstabe ist 1, wenn Datei dort nicht existiert, dann verschiebe in Ordner 0-9)
[dsj fdsfs.txt (erster Buchstabe ist [, wenn Datei dort nicht existiert, dann verschiebe in Ordner SONSTIGE)
d.h Unterorder sind A, B, C .... X, Y, Z, 0-9 und die Namen können Leerzeichen und Bindestriche beinhalten.
Könnt ihr mir da weiter helfen?
Ich möchte von allen Dateien eines Ordner den ersten Buchstaben auslesen und mittel einer for-Schleife und if-Bedingungen die Dateien dann alphabetisch in Unterordner bzw. anderen Ordner verschieben, wenn diese dort nicht existiert.
zum Beispiel:
abc def - ghi.txt (erster Buchstabe ist A, wenn Datei dort nicht existiert, dann verschiebe in Ordner A)
CccDdd lll.jpg (erster Buchstabe ist C, wenn Datei dort nicht existiert, dann verschiebe in Ordner C)
123 jkf.txt (erster Buchstabe ist 1, wenn Datei dort nicht existiert, dann verschiebe in Ordner 0-9)
[dsj fdsfs.txt (erster Buchstabe ist [, wenn Datei dort nicht existiert, dann verschiebe in Ordner SONSTIGE)
d.h Unterorder sind A, B, C .... X, Y, Z, 0-9 und die Namen können Leerzeichen und Bindestriche beinhalten.
Könnt ihr mir da weiter helfen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 301085
Url: https://administrator.de/contentid/301085
Ausgedruckt am: 26.11.2024 um 04:11 Uhr
4 Kommentare
Neuester Kommentar
Z.B. mit Powershell:
Gruß jodel32
$targetfolder = 'C:\Ordner'
gci $targetfolder -Filter '*.*' | group {$_.Name.Substring(0,1)} | %{
$first = $_.Name
switch -Regex ($_.Name){
'[a-z]'{$target = "$targetfolder\$first"}
'\d'{$target = "$targetfolder\0-9"}
default{$target = "$targetfolder\SONSTIGE"}
}
if (!(Test-Path $target)){md $target -Force}
$_.Group | move-item -Destination $target -EA Ignore
}
Die Erroraction Ignore gibt's erst ab min. PS3.0 ! Das ist der Grund. Du kannst stattdessen -EA SilentlyContinue verwenden. Dann sollte man die Files aber einzeln auf Existenz im Zielordner checken.
Ich würde aber die PS sowieso mal auf einen aktuellen Stand bringen PS 2.0 hat diverse Bugs und Unzulänglichkeiten.
Ich würde aber die PS sowieso mal auf einen aktuellen Stand bringen PS 2.0 hat diverse Bugs und Unzulänglichkeiten.