Batchdatei, die Dateien sortiert und Ordner erstellt
Liebe administrator.de-User, Programmierer und Entwickler,
ich suche eine Batchdatei, die mir ca. 1000 Dateien (Bilder) in Ordner steckt und zwar nach Beginn des Bilddateinamens.
z.B. heissen 150 Bilder "kreta001, kreta002, kreta003, ..."
diese Bilder sollten dann von meiner Batchdatei in einen Ordner gepackt werden, der dann "kreta" heisst.
Da ich mich mit Batchdateien noch nicht so gut auskenne bitte ich euch um Hilfe.
Vielen Dank im Voraus
MfG FocKo
PS: Meine Rechnerdaten:
- Tyan Tiger MP 2*1900+
- 1024 MB Arbeitsspeicher
- 540 GB HDD
- 256 MB MSI RX800GT
ich suche eine Batchdatei, die mir ca. 1000 Dateien (Bilder) in Ordner steckt und zwar nach Beginn des Bilddateinamens.
z.B. heissen 150 Bilder "kreta001, kreta002, kreta003, ..."
diese Bilder sollten dann von meiner Batchdatei in einen Ordner gepackt werden, der dann "kreta" heisst.
Da ich mich mit Batchdateien noch nicht so gut auskenne bitte ich euch um Hilfe.
Vielen Dank im Voraus
MfG FocKo
PS: Meine Rechnerdaten:
- Tyan Tiger MP 2*1900+
- 1024 MB Arbeitsspeicher
- 540 GB HDD
- 256 MB MSI RX800GT
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 48144
Url: https://administrator.de/forum/batchdatei-die-dateien-sortiert-und-ordner-erstellt-48144.html
Ausgedruckt am: 23.04.2025 um 09:04 Uhr
12 Kommentare
Neuester Kommentar
Moin FocKo,
auch von mir willkommen.
Leider war ich nicht so schlau, nochmal nachzufragen, sondern habe Deine erste Anforderung ernstgenommen... *grummel*
Die einfache Variante ist im Prinzip mit miniversums Einzeiler abzufackeln und sieht in epischer Breite so aus:
Demo-Aufruf:
[Die GROSS geschriebenen ECHO-Befehle zum Scharfmachen löschen.]
Der einzig nennenswerte Unterschied der Strategie zwischen miniversums und meiner Variante ist, dass ich zuerst alle "Gruppen", also die neuen Ordnernamen ermittle und dass bei mir Quell- und Zielordner unabhängig voneinander sind.
Gruß
Biber
P.S. Bin schon gespannt auf bastla's Variation des Themas....
P.P.S. Den Namen der Batchdatei spricht man/frau "Group-Bindestrich-Bilder"... die erste Variante für die erste Anforderung hieß "GroupBilder.bat."
auch von mir willkommen.
Leider war ich nicht so schlau, nochmal nachzufragen, sondern habe Deine erste Anforderung ernstgenommen... *grummel*
z.B. heissen 150 Bilder "kreta001, kreta002, kreta003, ..."
Na ja, vielleicht braucht ja irgend jemand mal eine Variante für diese Mimik, der/die kann sich nochmal melden...Die einfache Variante ist im Prinzip mit miniversums Einzeiler abzufackeln und sieht in epischer Breite so aus:
::---snipp Group-Bilder.bat---- Placed into the PD by Biber 2007
::---Variante für Dateien der Form "kreta - 001.jpg"... "Peine-4711.jpg"
@echo off & setlocal EnableDelayedExpansion
Set "bilderordner=Z:\bilder" && REM !!!!! HIER ANPASSEN!!!!!!
Set "ZielordnerRoot=D:\Alle meine Urlaube" && REM !!!!! HIER ANPASSEN!!!!!!
Set "lastgroup=nothing"
:: Step 1 Dateien mit gleichem Namensbeginn ermitteln.
:: Unterstellung: Name setzt sich zusammen aus n Zeichen + "-" oder " -" + m Ziffern + Endung .jpg.
Echo Moment...ermittle Gruppen...
For /f "delims=- " %%i in ('dir /b /o:n %bilderordner%\*-*.jpg') do (
(echo %%i|find /i "!lastgroup!">Nul) || (set "lastgroup=%%i" & set "allgroups=!allgroups! %%i")
)
echo Gefundene Gruppen: %Allgroups%
If not Exist "%ZielOrdnerRoot%" ECHO md "%zielOrdnerRoot%"
For %%i in (%Allgroups%) do (
ECHO md "%zielOrdnerRoot%\%%i"
ECHO move "%bilderordner%\%%i*.jpg" "%zielOrdnerRoot%\%%i"
)
goto :eof
::---snipp Group-Bilder.bat----
$cmd$group-bilder
Moment...ermittle Gruppen...
Gefundene Gruppen: Ballermann berlin kreta NeueVahrSüd
md "D:\Alle meine Urlaube"
md "D:\Alle meine Urlaube\Ballermann"
move "Z:\bilder\Ballermann*.jpg" "D:\Alle meine Urlaube\Ballermann"
md "D:\Alle meine Urlaube\berlin"
move "Z:\bilder\berlin*.jpg" "D:\Alle meine Urlaube\berlin"
md "D:\Alle meine Urlaube\kreta"
move "Z:\bilder\kreta*.jpg" "D:\Alle meine Urlaube\kreta"
md "D:\Alle meine Urlaube\NeueVahrSüd"
move "Z:\bilder\NeueVahrSüd*.jpg" "D:\Alle meine Urlaube\NeueVahrSüd"
Der einzig nennenswerte Unterschied der Strategie zwischen miniversums und meiner Variante ist, dass ich zuerst alle "Gruppen", also die neuen Ordnernamen ermittle und dass bei mir Quell- und Zielordner unabhängig voneinander sind.
Gruß
Biber
P.S. Bin schon gespannt auf bastla's Variation des Themas....
P.P.S. Den Namen der Batchdatei spricht man/frau "Group-Bindestrich-Bilder"... die erste Variante für die erste Anforderung hieß "GroupBilder.bat."
@Biber
Ich wollt's eigentlich schon einstampfen, aber wenn Du neugierig bist ...
Im Prinzip die gleiche Logik wie bei miniversum, nur etwas ausgeschmückt (und inzwischen auch schon getestet
):
Grüße
bastla
P.S.: Ich hatte auch an einem VB-Script gebastelt (falls die Namens-Systematik etwas komplizierter geworden wäre), das etwa Deinem Ablauf entsprochen hätte (also zuerst die Ordner, dann das Verschieben), daher meine "Verspätung" ...
[Edit]So weit da oben im Thread wollte ich das eigentlich nicht reinquetschen ... [/Edit]
Ich wollt's eigentlich schon einstampfen, aber wenn Du neugierig bist ...
Im Prinzip die gleiche Logik wie bei miniversum, nur etwas ausgeschmückt (und inzwischen auch schon getestet
@echo off & setlocal
set Typ=*.jpg
for /f "delims=-" %%i in ('dir /b %Typ%') do call :Process "%%i"
goto :eof
:Process
if not exist "%1" md "%1"
move "%1%Typ%" "%1"
Grüße
bastla
P.S.: Ich hatte auch an einem VB-Script gebastelt (falls die Namens-Systematik etwas komplizierter geworden wäre), das etwa Deinem Ablauf entsprochen hätte (also zuerst die Ordner, dann das Verschieben), daher meine "Verspätung" ...
[Edit]So weit da oben im Thread wollte ich das eigentlich nicht reinquetschen ... [/Edit]
@FocKo
Kann eigentlich nur an meiner Unterstellung liegen, dass die Bilder die Endung .jpg haben.
Aber nimm auch lieber bastla's Variante... meine ist nur so prosaisch geworden, weil es eine abgespeckte Variante der Anforderung 1 ist.
Zu Deiner Frage:
Erstens) Anforderungen "Musiktitel nach Interpret/Album und Titel trennen und bla" hatten wir schon. Probier mal die Forumssuche.
Zweitens) Wenn wir die Beispielskizzen so dürftig kommentiert/so kryptisch geschrieben haben, dass ein Transfer auf eine ähnliche Aufgabe nicht möglich ist, dann haben wir es versiebt. Entschuldige.
An welchen Stellen gibt es denn Verständnisprobleme?
Gruß
Biber
Kann eigentlich nur an meiner Unterstellung liegen, dass die Bilder die Endung .jpg haben.
Aber nimm auch lieber bastla's Variante... meine ist nur so prosaisch geworden, weil es eine abgespeckte Variante der Anforderung 1 ist.
Zu Deiner Frage:
Erstens) Anforderungen "Musiktitel nach Interpret/Album und Titel trennen und bla" hatten wir schon. Probier mal die Forumssuche.
Zweitens) Wenn wir die Beispielskizzen so dürftig kommentiert/so kryptisch geschrieben haben, dass ein Transfer auf eine ähnliche Aufgabe nicht möglich ist, dann haben wir es versiebt. Entschuldige.
An welchen Stellen gibt es denn Verständnisprobleme?
Gruß
Biber
Hallo FocKo!
Sowohl miniversum's Lösung, als auch meine oben stehende Variante, setzen voraus, dass die Batch-Datei direkt im Bilder-Ordner liegt - von dort aus sollte es dann aber schon klappen (wenn Deine Bilder den Typ .jpg haben).
Für die Musikdateien kannst Du (nach Anpassung des Dateityps) die gleiche Batch-Lösung nehmen, da auch hier das Trennzeichen (steht nach "delims=") ein "-" ist.
Grüße
bastla
Sowohl miniversum's Lösung, als auch meine oben stehende Variante, setzen voraus, dass die Batch-Datei direkt im Bilder-Ordner liegt - von dort aus sollte es dann aber schon klappen (wenn Deine Bilder den Typ .jpg haben).
Für die Musikdateien kannst Du (nach Anpassung des Dateityps) die gleiche Batch-Lösung nehmen, da auch hier das Trennzeichen (steht nach "delims=") ein "-" ist.
Grüße
bastla
@miniversum
2 Kleinigkeiten (und beide ganz am Ende, beim Verschiebe-Ziel, für das auch die Ordnerangabe genügt hätte):
Das Anführungszeichen sollte vor dem ersten %%i stehen, um auch den Pfad gegen Leerstellen abzusichern (wie Du es vorne bereits gemacht hast), und auf einen Unix/Linux-Slash könnte ein MS-System etwas gereizt (oder zumindest mit Unverständnis) reagieren ...
Grüße
bastla
2 Kleinigkeiten (und beide ganz am Ende, beim Verschiebe-Ziel, für das auch die Ordnerangabe genügt hätte):
Das Anführungszeichen sollte vor dem ersten %%i stehen, um auch den Pfad gegen Leerstellen abzusichern (wie Du es vorne bereits gemacht hast), und auf einen Unix/Linux-Slash könnte ein MS-System etwas gereizt (oder zumindest mit Unverständnis) reagieren ...
Grüße
bastla