automatisiertes Übertragen von Dateinamen auf andere Dateien (nach String im Namen)
Hallo zusammen!
Ich bin in Sachen Batch Programmierung leider nicht so fit & würde gerne folgende Aufgabe lösen:
ich möchte die Dateinamen von bestehenden Dateien automatisiert auf andere übertragen, wobei der komplette Dateiname der (.jpg) Ausgangsdatei der z.B. die 01 enthält auf die bmp Datei übertragen werden soll die im Namen 001 enthält (02 dann auf die .bmp Datei mit 002 im Dateinamen enthält usw.).
ein Beispiel:
der Ordner enthält z.B. die Dateien
party am see (augsburg1)_01_.jpg
geburtstag stephan (muenchen2)_02_.jpg
abschlussfeier (augsburg3)_03_.jpg
und
pic 001.bmp
pic 002.bmp
pic 003.bmp
das Ergebniss soll folgendes sein:
party am see (augsburg)-01-.bmp
geburtstag stephan (muenchen)-02-.bmp
abschlussfeier (augsburg)-03-.bmp
Schon mal besten Dank im vorraus!
Philipp
Ich bin in Sachen Batch Programmierung leider nicht so fit & würde gerne folgende Aufgabe lösen:
ich möchte die Dateinamen von bestehenden Dateien automatisiert auf andere übertragen, wobei der komplette Dateiname der (.jpg) Ausgangsdatei der z.B. die 01 enthält auf die bmp Datei übertragen werden soll die im Namen 001 enthält (02 dann auf die .bmp Datei mit 002 im Dateinamen enthält usw.).
ein Beispiel:
der Ordner enthält z.B. die Dateien
party am see (augsburg1)_01_.jpg
geburtstag stephan (muenchen2)_02_.jpg
abschlussfeier (augsburg3)_03_.jpg
und
pic 001.bmp
pic 002.bmp
pic 003.bmp
das Ergebniss soll folgendes sein:
party am see (augsburg)-01-.bmp
geburtstag stephan (muenchen)-02-.bmp
abschlussfeier (augsburg)-03-.bmp
Schon mal besten Dank im vorraus!
Philipp
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 29222
Url: https://administrator.de/forum/automatisiertes-uebertragen-von-dateinamen-auf-andere-dateien-nach-string-im-namen-29222.html
Ausgedruckt am: 18.05.2025 um 14:05 Uhr
4 Kommentare
Neuester Kommentar
Moin Philpp,
wenn die Dateimaske für alle *.jpg-Dateien gleich "*_??_.jpg" ist, könnte es so gehen:
::--- RenPic00x.bat
@echo off & setlocal
for /f %%i in ('dir /b "*_??_.jpg"') do call :BmpRename "%%~ni"
:goto :eof
:BmpRename
Set "jpgName=%~1"
set "bmpname=pic 0%jpgname:~-3,2%.bmp"
IF exist "%bmpname% ren "%bmpname%" "%jpgname%.bmp"
goto :eof
:: RenPic00x.bat
wenn die Dateimaske für alle *.jpg-Dateien gleich "*_??_.jpg" ist, könnte es so gehen:
::--- RenPic00x.bat
@echo off & setlocal
for /f %%i in ('dir /b "*_??_.jpg"') do call :BmpRename "%%~ni"
:goto :eof
:BmpRename
Set "jpgName=%~1"
set "bmpname=pic 0%jpgname:~-3,2%.bmp"
IF exist "%bmpname% ren "%bmpname%" "%jpgname%.bmp"
goto :eof
:: RenPic00x.bat
Ach Philipp,
wie nicht anders zu erwarten war, liegt es wieder am Nicht-Testen...sorry.
1. Lesefehler: Deine *.jpgs enden mit "...-nn-.jpg" statt "..._nn_.jpg
2. Denkfehler: Ich dachte natürlich, dass -wenn ich mit "%%~ni" nach dem Namen der *.jpg-Datei frage, der ganze Name zurückkommt. Aber bei dem "party"-Beispiel oben käme aber nur der Teil des Namens bis zum ersten Leerzeichen.
3. Tippfehler: Statt ":goto :eof" natürlich nur "goto :eof"
4. Erweiterung: wenn KEINE Dateien mit dem Dateimuster da sind, dann soll er nicht rummaulen. Also "Fehler-"Meldung "Datei nicht gefunden" unterdrücken.
So funktioniert es besser:
(Annahme: Batch wird in dem Verzeichnis gestartet, wo die *.jpgs/*.bmps sind)
Gruß
Biber
[Edit]
5) ALT: IF exist "%bmpname% echo ren ....
Besser : IF exist "%bmpname%" ren ....
Dann komme ich zur Ausgabe:
$md$renpic001.bat
ren "pic 001.bmp" "party am see (augsburg)-01-.bmp"
[/Edit]
wie nicht anders zu erwarten war, liegt es wieder am Nicht-Testen...sorry.
1. Lesefehler: Deine *.jpgs enden mit "...-nn-.jpg" statt "..._nn_.jpg
2. Denkfehler: Ich dachte natürlich, dass -wenn ich mit "%%~ni" nach dem Namen der *.jpg-Datei frage, der ganze Name zurückkommt. Aber bei dem "party"-Beispiel oben käme aber nur der Teil des Namens bis zum ersten Leerzeichen.
3. Tippfehler: Statt ":goto :eof" natürlich nur "goto :eof"
4. Erweiterung: wenn KEINE Dateien mit dem Dateimuster da sind, dann soll er nicht rummaulen. Also "Fehler-"Meldung "Datei nicht gefunden" unterdrücken.
So funktioniert es besser:
::--- RenPic00x.bat
@echo off & setlocal
if exist "*-??-.jpg" for /f "delims=" %%i in ('dir /b "*-??-.jpg"') do call :BmpRename "%%~ni"
goto :eof
:BmpRename
Set "jpgName=%~1"
set "bmpname=pic 0%jpgname:~-3,2%.bmp"
IF exist "%bmpname%" echo ren "%bmpname%" "%jpgname%.bmp"
goto :eof
:: RenPic00x.bat
(Annahme: Batch wird in dem Verzeichnis gestartet, wo die *.jpgs/*.bmps sind)
Gruß
Biber
[Edit]
5) ALT: IF exist "%bmpname% echo ren ....
Besser : IF exist "%bmpname%" ren ....
Dann komme ich zur Ausgabe:
$md$renpic001.bat
ren "pic 001.bmp" "party am see (augsburg)-01-.bmp"
[/Edit]