Dateiumbenennung nach Namen Ihres Heimatordners
Ein freundliches Hallo hier im Forum!
Bin trotz Suche immer nur auf Teilergebnisse gestoßen die mich leider nicht weitergebracht haben.
Jetzt hoffe ich das Ihr mir hier helfen könnt.
Es geht wie der Titel schon sagt um ein Dateiumbenennungsproblem.
Ornder struktur sieht folgend aus:
Y:\.........\Anlagenfotos\Anlage\Motor\file1.jpg
in diesem "Anlage" Orndner liegen unterschiedlich viele Motor Ordner mit unterschiedlich vielen Bildern (benannt in Cameramanier).
Diese Files müssen nun den Ordnernamen + fortlaufende Nummerierung 00 erhalten.
Schön wäre wenn ein Script den angegebenen Ornder in der Struktur nach unten abarbeitet und allen gefundenen JPG Datein den Namen des "Fundortes + Nummer verpasst.
Ich hoffe ich hab mein Problem einigermaßen brauchbar geschildert und Ihr könnt mir Helfen.
Mein Dank ist euch sicher!
mfg
bergloewe
Bin trotz Suche immer nur auf Teilergebnisse gestoßen die mich leider nicht weitergebracht haben.
Jetzt hoffe ich das Ihr mir hier helfen könnt.
Es geht wie der Titel schon sagt um ein Dateiumbenennungsproblem.
Ornder struktur sieht folgend aus:
Y:\.........\Anlagenfotos\Anlage\Motor\file1.jpg
in diesem "Anlage" Orndner liegen unterschiedlich viele Motor Ordner mit unterschiedlich vielen Bildern (benannt in Cameramanier).
Diese Files müssen nun den Ordnernamen + fortlaufende Nummerierung 00 erhalten.
Schön wäre wenn ein Script den angegebenen Ornder in der Struktur nach unten abarbeitet und allen gefundenen JPG Datein den Namen des "Fundortes + Nummer verpasst.
Ich hoffe ich hab mein Problem einigermaßen brauchbar geschildert und Ihr könnt mir Helfen.
Mein Dank ist euch sicher!
mfg
bergloewe
Please also mark the comments that contributed to the solution of the article
Content-ID: 148757
Url: https://administrator.de/forum/dateiumbenennung-nach-namen-ihres-heimatordners-148757.html
Printed on: May 14, 2025 at 14:05 o'clock
15 Comments
Latest comment
Moin bergloewe82,
willkommen im Forum.
Zur Sicherheit die Rückfrage:
Mit Ordnername "Fundort" meinst du im Beispiel "Y:\.........\Anlagenfotos\Anlage\Motor\file1.jpg" dann
Sprich: sind vielleicht in der untersten Ordnerebene mehrere Parallel-Ordner, die z.B. "Sonstiges" heissen?
Grüße
Biber
willkommen im Forum.
Zur Sicherheit die Rückfrage:
Mit Ordnername "Fundort" meinst du im Beispiel "Y:\.........\Anlagenfotos\Anlage\Motor\file1.jpg" dann
- einen neuen Dateinamen "Motor_0001.jpg"?
- oder einen neuen Dateinamen "Anlage_Motor_0001.jpg"?
Sprich: sind vielleicht in der untersten Ordnerebene mehrere Parallel-Ordner, die z.B. "Sonstiges" heissen?
Grüße
Biber
Moin bergloewe82,
das sollte mit einem Oneliner abgefackelt werden können.
Ich habe eben mal als proof-of-concept ein paar *.jpg in meinem Verzeichnis "Y:\Eigene Dateien\Download" angetestet:
[ die Zeile mit ">" am Anfang ist die abgefeuerte... das ">" NICHT mit eingeben, ist sich Prompt]
Übersetzung:
So ungefähr wäre die Skizze...
Magst du mal die Anpassung der Skizze in einen paarzeiligen Batch versuchen und wir treffen uns wieder zur End-Abnahme hier?
Grüße
Biber
das sollte mit einem Oneliner abgefackelt werden können.
Ich habe eben mal als proof-of-concept ein paar *.jpg in meinem Verzeichnis "Y:\Eigene Dateien\Download" angetestet:
[ die Zeile mit ">" am Anfang ist die abgefeuerte... das ">" NICHT mit eingeben, ist sich Prompt]
>for %v in ("y:\Eigene dateien\Download") do @for /f "delims=" %i in ('Dir /b /s "%~v\*.jpg"') do @set /a "x+=1">nul & echo ren "%i" "%~nxv!x!%~xi"
ren "y:\Eigene dateien\Download\wp0000009ab707222064.jpg" "Download1.jpg"
ren "y:\Eigene dateien\Download\wp0000009ab70723b074.jpg" "Download2.jpg"
Übersetzung:
- in einer äußeren FOR-Anweisung "for %v in ("y:\Eigene dateien\Download") do" wird das Verzeichnis angegeben, das durchgenudelt werden soll. die Laufvariable habe ich %v wie Verzeichnis genannt.
- in einer weiteren (etwas mehr inneren) FOR/F-Anweisung werden mit dem "DIR /b /S"-Befehl alle "*.jpgs" dieses Verzeichnisses rangekarrt. Laufvariable ist %i... wie...ähh.. wie die Hauptschleifenvariable halt immer heisst. Jepp, "%i" wie "immer"
- danach zähle ich eine (numerische) Variable x hoch, wenn sie nicht definiert war, wird ihr der Wert 0 unterstellt.
- den Wert x=x+1 verwende ich als "Durchnumerator" für die neuen Dateinamen.
- weil es ja nur ein proof-of-concept sein soll steht da "echo ren" statt "ren".
- ach ja - bei mir brennt immer "DelayedExpansion".... im Batch musst du es setzen mit "Setlocal EnableDelayedExpansion"
So ungefähr wäre die Skizze...
Magst du mal die Anpassung der Skizze in einen paarzeiligen Batch versuchen und wir treffen uns wieder zur End-Abnahme hier?
Grüße
Biber

Hallo Bergloewe,
ich vermute mal dir fehlt das von Biber erwähnte
Versuch mal dies (ungetestet)
Gruß
LotPings
PS: Bei mir fängt-das Alphabet die Schleife mit A an 
Edit: Wenn die Ausgabe (ob nun mit oder ohne @echo off) korrekt erscheint, das umbenennen in Zeile 8 "scharfmachen" indem das echo vor Ren entfernt wird
ich vermute mal dir fehlt das von Biber erwähnte
Setlocal EnableDelayedExpansion
Versuch mal dies (ungetestet)
::@echo off
setlocal EnableDelayedExpansion
Set "Basis=Y:\...\Anlage"
For /f "Delims=" %%A in (' Dir /B/AD "%Basis%" ') Do (
Set "Cnt=100"
PushD "%%A"
For /f "Delims=" %%B in ( 'Dir /B /A-D *.jpg '
) Do Set /A "Cnt+=1" & Echo Ren "%%~B" "%%~nxA_!Cnt:~-2!.jpg"
PopD
)
Gruß
LotPings
PS: Bei mir fängt
Edit: Wenn die Ausgabe (ob nun mit oder ohne @echo off) korrekt erscheint, das umbenennen in Zeile 8 "scharfmachen" indem das echo vor Ren entfernt wird

Also bei mir klappt ein Test (Batch liegt im Basis-Verzeichnis):
Du musst doch aber sehen können bei welchem Befehl (mit welchen Daten) die Fehlermeldung kommt?
Gruß
LotPings
>dir /S
Verzeichnis von D:\Test\2010-08\11
2010-08-11 14:30 <DIR> .
2010-08-11 14:30 <DIR> ..
2010-08-11 14:26 <DIR> motor
2010-08-11 14:32 287 ren-motor-pic.cmd
4 Datei(en), 287 Bytes
Verzeichnis von D:\Test\2010-08\11\motor
2010-08-11 14:26 <DIR> .
2010-08-11 14:26 <DIR> ..
2010-08-11 14:26 3 test.jpg
2010-08-11 14:26 3 testxyz.jpg
2 Datei(en), 6 Bytes
Anzahl der angezeigten Dateien:
3 Datei(en), 293 Bytes
5 Verzeichnis(se), 229.543.149.568 Bytes frei
>ren-motor-pic.cmd
Ren "D:\Test\2010-08\11\motor\test.jpg" "motor_01.jpg"
Ren "D:\Test\2010-08\11\motor\testxyz.jpg" "motor_02.jpg"
Drücken Sie eine beliebige Taste . . .
Du musst doch aber sehen können bei welchem Befehl (mit welchen Daten) die Fehlermeldung kommt?
Gruß
LotPings
Hi bergloewe,
liegt nur am ArbeitsPfad
Lot schrieb ja das die Batch im "Basis" Ornder lag
Zeile 03 und 04 Angepasst plus Zeile 11 und geht jetzt von egal woher
Gruß Phil
liegt nur am ArbeitsPfad
Lot schrieb ja das die Batch im "Basis" Ornder lag
Zeile 03 und 04 Angepasst plus Zeile 11 und geht jetzt von egal woher
::@echo off
setlocal EnableDelayedExpansion
pushD "D:\test jpg\"
For /f "Delims=" %%A in (' Dir /B/AD ') Do (
Set "Cnt=100"
PushD "%%A"
For /f "Delims=" %%B in ( 'Dir /B /A-D *.jpg '
) Do Set /A "Cnt+=1" & Ren "%%~B" "%%~nxA_!Cnt:~-2!.jpg"
PopD
)
popD
Gruß Phil
Moin bergloewe,
naja hat ja LotPings fast geschrieben
meinst Du sowas?
Gruß Phil
naja hat ja LotPings fast geschrieben
meinst Du sowas?
::@echo off
setlocal EnableDelayedExpansion
pushD "D:\test jpg\"
For /f "Delims=" %%A in (' Dir /B/AD ') Do (set "Antwort=N"
echo den unten angegebenen Ordner durcharbeiten ? [j] [n]
set /p Anwort="%%A"
if /i "%Antwort%" == "j" (
Set "Cnt=100"
PushD "%%A"
For /f "Delims=" %%B in ( 'Dir /B /A-D *.jpg '
) Do Set /A "Cnt+=1" & Ren "%%~B" "%%~nxA_!Cnt:~-2!.jpg"
PopD
)
)
popD
Gruß Phil
genau so wollte ich es erst schreiben aber dann hab ichs doch anders gemacht.
zum Ordner draufziehen auf den Batch oder seperate Eingabe
Gruß Phil
zum Ordner draufziehen auf den Batch oder seperate Eingabe
::@echo off
setlocal EnableDelayedExpansion
if not "%~1" == "" (set Basis="%~1") else set /p Basis=Bitte den Pfad angeben in welchem die Ornder mit den enthaltenen Bildern sind :
if exist "%Basis%" (pushD "%Basis%") else goto :eof
For /f "Delims=" %%A in (' Dir /B/AD ') Do (
Set "Cnt=100"
PushD "%%A"
For /f "Delims=" %%B in ( 'Dir /B /A-D *.jpg '
) Do Set /A "Cnt+=1" & Ren "%%~B" "%%~nxA_!Cnt:~-2!.jpg"
PopD
)
popD
Gruß Phil
Moin bergloewe82,
es hilft doch nur begrenzt weiter, wenn wir erfahren, dass "er sie jetzt wieder nicht umbenennt".
Bitte setz doch da, wo jetzt etwas passieren soll (z.B. "ren bla...") statt dessen oder zusätzlich ein "echo ren..." in den Schnipsel.
Oder zeig das aktuelle Verzeichnis an sinnvollen Stellen mit "echo %cd%" an. Usw. usw.
Und dann setz die Bildschirmausgabe in deinen nächsten Kommentar.
Grüße
Biber
es hilft doch nur begrenzt weiter, wenn wir erfahren, dass "er sie jetzt wieder nicht umbenennt".
Bitte setz doch da, wo jetzt etwas passieren soll (z.B. "ren bla...") statt dessen oder zusätzlich ein "echo ren..." in den Schnipsel.
Oder zeig das aktuelle Verzeichnis an sinnvollen Stellen mit "echo %cd%" an. Usw. usw.
Und dann setz die Bildschirmausgabe in deinen nächsten Kommentar.
Grüße
Biber
naja ist ein bissel kompliziert.
ich gebs ja zu - Mein Fehler
im CDM-Line hatte ichs seperat getestet liegt wohl am Anführungszeichen
ersetzte Zeile 04
Edit
mit diesen Zeile
nun wirds Funktionieren
/Edit
Gruß Phil
ich gebs ja zu - Mein Fehler
im CDM-Line hatte ichs seperat getestet liegt wohl am Anführungszeichen
ersetzte Zeile 04
if exist "%Basis%" (pushD "%Basis%") else goto :eof
Edit
mit diesen Zeile
if not defined Basis goto :eof
if exist "%Basis:"=%" (pushD "%Basis:"=%") else goto :eof
nun wirds Funktionieren
/Edit
Gruß Phil