Dateien Umbenannen (Erweiterung berücksichtigen)

German support forum

Moderators: white, Hacker, Stefan2

Post Reply
rwe67
Junior Member
Junior Member
Posts: 3
Joined: 2017-08-05, 19:42 UTC
Location: Hamburg

Dateien Umbenannen (Erweiterung berücksichtigen)

Post by *rwe67 »

Hallo Ihr

Folgendes Problem. Ich fotografiere sehr gerne Mittlerweile immer mal wieder im JPG und RAW - Format. Daduch habe ich Dateien mit den selben Dateinamen und unterschiedlichen Erweiterungen. Nach einem schönen Ausflub mit meiner Kamera habe ich viele(!) Dateien mal mit RWA, mal ohne. Das sieht dann so aus:

Code: Select all

IMG_4725.CR2
IMG_4725.JPG
IMG_4726.CR2
IMG_4726.JPG
IMG_4727.CR2
IMG_4727.JPG
IMG_4728.CR2
IMG_4728.JPG
IMG_4729.CR2
IMG_4729.JPG
IMG_4730.CR2
IMG_4730.JPG
IMG_4731.CR2
IMG_4732.CR2
IMG_4733.CR2
IMG_4734.CR2
IMG_4736.CR2
IMG_4736.JPG
IMG_4737.CR2
IMG_4737.JPG
IMG_4739.CR2
IMG_4739.JPG
IMG_4740.CR2
Am liebsten möchte ich nun die Dateien nach der folgenden Regeln umbenennen: Alle Dateien (*.cr2 und *.jpg) aus einer Datei mit dem Namen *.jpg wird über die EXIF-Informationen das Datum und die Uhrzeit gezogen und alle(!) dateien mit diesem Namen entsprechend umbenannt - die Erweiterung soll erhalten bleiben.
Umbenennen der Datei mittels "[=exif.Datum.YMD]_[=exif.Zeit.hm]_[C]" (Anzahl Stellen = 3). Aus der Obigen Liste wird dann:

Code: Select all

20170805_1158_001.CR2
20170805_1158_001.JPG
20170805_1159_002.CR2
20170805_1159_002.JPG
20170805_1207_003.CR2
20170805_1207_003.JPG
20170805_1213_004.CR2
20170805_1213_004.JPG
20170805_1217_005.CR2
20170805_1217_005.JPG
20170805_1218_006.CR2
20170805_1218_006.JPG
20170805_1241_007.CR2
20170805_1242_008.CR2
20170805_1242_009.CR2
20170805_1242_010.CR2
20170805_1255_011.CR2
20170805_1255_011.JPG
20170805_1315:012.CR2
20170805_1315:012.JPG
20170805_1317_013.CR2
20170805_1317_013.JPG
20170805_1907_014.CR2
Problem dabei ist, dass die RAW und JPG-Dateien, die das gleiche Bild enthalten auch den gleichen Dateinamen (nur andere Erweiterung behalten).

Habt Ihr eine Idee, wie dies mit dem TC gelöst werden kann?

Gruß
RWE
User avatar
Hacker
Moderator
Moderator
Posts: 13052
Joined: 2003-02-06, 14:56 UTC
Location: Bratislava, Slovakia

Post by *Hacker »

rwe67,
New: You can now select related files. For example, you would want to select all RAW image files (.cr2), but only if there is a jpg file in the same directory. This can be done with the following selection string:
*.jpg>*.cr2
This also supports more complex naming schemes. For example, if the jpg file is named IMG_1057.JPG and the raw file CRW_1057.CR2, the selection string would have to be:
*.jpg>crw*.cr2
HTH?
Roman
Mal angenommen, du drückst Strg+F, wählst die FTP-Verbindung (mit gespeichertem Passwort), klickst aber nicht auf Verbinden, sondern fällst tot um.
rwe67
Junior Member
Junior Member
Posts: 3
Joined: 2017-08-05, 19:42 UTC
Location: Hamburg

Danke - erster Schritt funktioniert gut!

Post by *rwe67 »

Hallo Hacker

Die Auswahl funktioniert. Mit dem String zur Auswahl "*.jpg>*.cr2" werden alle CR2 Dateien ausgewählt zu denen es auch eine zugehörige JPG Datei gibt. Klasse, das kannte ich noch nicht! Danke für diesen Tipp!

Wenn ich nach der Auswahl in die "Mehrfach umbenennen" (mittels STRG 'M') gehe, kann ich auch die Umbenennen-Regel eingeben
Maske Dateiname: "[=exif.Datum.YMD]_[=exif.Zeit.hm]_[C]"
Erweiterung: "[E]"
Anzahl Stellen: 3

Leider werden dann die Dateien stumpf durchnummeriert. Das bedeutet bei meiner Liste oben bekomme ich folgende Dateinamen angeboten:

Code: Select all

20170805_1158_001.CR2 
20170805_1158_002.JPG 
20170805_1159_003.CR2 
20170805_1159_004.JPG 
20170805_1207_005.CR2 
20170805_1207_006.JPG 
20170805_1213_007.CR2 
20170805_1213_008.JPG 
20170805_1217_009.CR2 
20170805_1217_010.JPG 
20170805_1218_011.CR2 
20170805_1218_012.JPG 
20170805_1241_013.CR2 
20170805_1242_014.CR2 
20170805_1242_015.CR2 
20170805_1242_016.CR2 
20170805_1255_017.CR2 
20170805_1255_018.JPG 
20170805_1315:019.CR2 
20170805_1315:020.JPG 
20170805_1317_021.CR2 
20170805_1317_022.JPG 
20170805_1907_023.CR2 
Leider stimmen die Zahlen dann nicht zu meiner Erwartung :-(

Was mache ich falsch?

Danke
RWE
User avatar
Hacker
Moderator
Moderator
Posts: 13052
Joined: 2003-02-06, 14:56 UTC
Location: Bratislava, Slovakia

Post by *Hacker »

rwe67,
Leider stimmen die Zahlen dann nicht zu meiner Erwartung
Was erwartest Du denn?

Roman
Mal angenommen, du drückst Strg+F, wählst die FTP-Verbindung (mit gespeichertem Passwort), klickst aber nicht auf Verbinden, sondern fällst tot um.
User avatar
Stefan2
Power Member
Power Member
Posts: 4133
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Re: Dateien Umbenannen (Erweiterung berücksichtigen)

Post by *Stefan2 »

Nummeriere gleichnamige Dateien (unterschiedliche Erweiterung) mit der selben Indexnummer.

rwe67 wrote:...

Aus der Obigen Liste wird dann:

20170805_1158_001.CR2
20170805_1158_001.JPG

20170805_1159_002.CR2
20170805_1159_002.JPG

20170805_1207_003.CR2
20170805_1207_003.JPG
...


Ist es für dich möglich, die Dateien erst einmal nur mit dem Datumsstempel zu benennen,
20170805_1158.CR2
20170805_1158.JPG

20170805_1159.CR2
20170805_1159.JPG

und dann im zweiten Schritt den zusammengehörigen Dateien mit einer Batch(*) die Nummerierung anzuhängen?



* zB: http://ghisler.ch/board/viewtopic.php?p=286530#286530
Für jede xyz.JPG
-- add counter: xyz_001.JPG
-- ren xyz.CR2 too if existent: xyz_001.CR2 (if not just skip)


Auch einzelne JPGs erhalten eine Nummerierung.
Falls das nicht gewünscht ist, müsste man die Batch ändern:
Für jede xyz.JPG
-- if xyz.CR2 exists (...add counter to JPG + CR2...)



- - - EDIT

Etwa so:

Code: Select all


@ECHO OFF
REM https://ghisler.ch/board/viewtopic.php?t=48244
REM Dateien Umbenannen (Erweiterung berücksichtigen)
REM Nummeriere gleichnamige Dateien (unterschiedliche Erweiterung) mit der selben Indexnummer.

setlocal EnableDelayedExpansion
SET /A counter=0

REM for each *.JPG:
FOR /F %%f in ('dir /b *.JPG') do (
	ECHO found: %%f
	Set base=%%~nf
	ECHO try on !base!.CR2
	If exist "!base!.CR2" (call :do_rename "%%f") else (ECHO No CR2 found & ECHO - - -)
	)
GOTO :eof


:do_rename
	ECHO Renaming %1 and CR2
    REM increase counter:
    SET /A counter+=1
    REM format counter, pad to 4 digits
    SET counter=0000%counter%
    SET counter=!counter:~-4!
    REM get base name of *.dng file:
    Set base=%~n1
    REM rename every file with same base name 
    REM by adding a counter plus origin extension:
    ren "%base%.JPG" "%base%_%counter%.JPG"
    ren "%base%.CR2" "%base%_%counter%.CR2"
    ECHO - - -
REM EOF
GOTO :EOF

Erklaerbaer:

FROM:
20170805_0456.JPG
20170805_1158.CR2
20170805_1158.JPG
20170805_1159.CR2
20170805_1159.JPG
20170805_1234.CR2
20170805_1234.JPG
TO:
20170805_0456.JPG
20170805_1158_001.CR2
20170805_1158_001.JPG
20170805_1159_002.CR2
20170805_1159_002.JPG
20170805_1234_003.CR2
20170805_1234_003.JPG

Messages:
found: 20170805_0456.JPG
try on 20170805_0456.CR2
No CR2 found
- - -
found: 20170805_1158.JPG
try on 20170805_1158.CR2
Renaming "20170805_1158.JPG"
- - -
found: 20170805_1159.JPG
try on 20170805_1159.CR2
Renaming "20170805_1159.JPG"
- - -
found: 20170805_1234.JPG
try on 20170805_1234.CR2
Renaming "20170805_1234.JPG"
- - -

REM ENDE




 
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 48028
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

Bei Total Commander 9 können Sie einfach nur
[=exif.Datum.YMD]_[=exif.Zeit.hm]

als Ziel angeben - TC bietet dann von sich aus an, doppelte automatisch durchzunummerieren. Wenn das Resultat (2), (3) usw. nicht Ihren Wünschen entspricht, können Sie es in einem 2. Schritt durch Suchen+Ersetzen ändern.
Author of Total Commander
https://www.ghisler.com
rwe67
Junior Member
Junior Member
Posts: 3
Joined: 2017-08-05, 19:42 UTC
Location: Hamburg

...so kann es klappen

Post by *rwe67 »

Danke nochmals für die Antworten!

Ich nehme mit, dass der TC mein Problem nicht nativ lösen kann, dass ich aber mit einem Shell-Script meine Dateien in zwei Schritten nach meinen Wünschen umbenennen kann:
1. Alle Dateien den Counter setzen (JPG und CR2 werden dabei berücksichtigt)
2. den Zeitstempel setzen
(In der anderen Reihenfolge klappt es nicht, da ggf. mehrere Dateien in der gleichen Minute gemacht werden)

Dabei hat mir das Script von Stefan2 sehr geholfen (Danke Stefan!)... ich habe es aber nochmal etwas umgeschrieben, damit _alle_ JPG und die dazugehörenden CR2 umbenannt werden. Ich probiere den Schritt 1 nun erstmal mit diesem Script (dieses Script werde ich in das TC-Verzeichnis werfen, damit es immer verfügbar ist):

Code: Select all

@ECHO OFF
REM https://ghisler.ch/board/viewtopic.php?t=48244
REM Dateien Umbenannen (Erweiterung berücksichtigen)
REM Nummeriere gleichnamige Dateien (unterschiedliche Erweiterung) mit der selben Indexnummer.

setlocal EnableDelayedExpansion
SET /A counter=0

REM for each *.JPG:
FOR /F %%f in ('dir /b *.JPG') do (
   ECHO found: '%%f'
   REM in %%f setht jetzt "*.jpg"
   Set base=%%~nf
   call :do_rename !base!
)
GOTO :eof

:do_rename
   Set base=%1
   SET MSG=Renaming '%base%' with JPG
   REM increase counter:
   SET /A counter+=1
   REM format counter, pad to 4 digits
   SET counter=0000%counter%
   SET counter=!counter:~-4!
   REM get base name of *.dng file:
   REM rename every file with same base name
   REM by adding a counter plus origin extension:
   ren "%base%.JPG" "%base%_%counter%.JPG"
   if exist "!base!.CR2" (
     SET MSG=Renaming '%base%' with JPG and CR2
     ren "%base%.CR2" "%base%_%counter%.CR2"
   )
   ECHO %MSG%
   ECHO - - -
REM EOF
GOTO :EOF

PAUSE
User avatar
Stefan2
Power Member
Power Member
Posts: 4133
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Dateien mit Exif-Datum umbenennen // 'ExifTool by Phil Harvey'

Post by *Stefan2 »

rwe67 wrote:...

... aber mit einem Shell-Script meine Dateien in zwei Schritten nach meinen Wünschen umbenennen kann:
Extra Tipp für dich oder die Mitleser:


Besorg' dir eventuell noch das 'ExifTool by Phil Harvey'

Das ist ein Kommandozeilentool, welches du in die Batch mit einbauen kannst
um auch die Dateien gleich mit dem Exif-Datum umzubenennen (inkl. einfachen Counter, falls der reicht), > alles in einem Schritt abarbeiten.


- - -


Diese Batch kannst du aus dem TC heraus aufrufen und den Parameter "%P" für das aktuelle Verzeichnis übergeben.



In der Batch kannst du dann mit '%~1' auf dieses Argument zugreifen.

Beispiel-Code

Code: Select all

@ECHO OFF

ECHO TC-Param: "%P"
ECHO Param original: %1
ECHO Param no Quote: %~1
SET Source=%~1
ECHO Source: "%Source%"

ECHO.&ECHO ---&ECHO.

ECHO Trick 17: Zeichen hinzufügen, um dies zu finden und mit dem letzten Backslash zu löschen
ECHO TC-Param: "%P#"
ECHO Param original: %1
ECHO Param no Quote: %~1
SET SourceNoTrail=%Source:\#=%
ECHO SourceNoTrail %SourceNoTrail%

PAUSE

CD "%Source%"

REM     exiftool "-FileName<CreateDate" -d %Y%m%d_%H%M%S%%-c.%%e dir
REM
REM          Rename all images in "dir" according to the "CreateDate" date and
REM          time, adding a copy number with leading '-' if the file already
REM          exists ("%-c"), and preserving the original file extension (%e).
REM          Note the extra '%' necessary to escape the filename codes (%c and
REM          %e) in the date format string.


REM     exiftool "-FileName<${CreateDate}_$filenumber.jpg" -d %Y%m%d *.jpg
REM
REM          Set the filename of all JPG images in the current directory from
REM          the CreateDate and FileNumber tags, in the form
REM          "20060507_118-1861.jpg".
REM          



REM Hier den anderen Code einfügen....
REM FOR /F %%f
REM :do_rename 



GoTo :EOF



Ausgabe dieser Batch:
=====================

TC-Param: "P"
Param original: "c:\Windows\Downloaded Program Files"
Param no Quote: c:\Windows\Downloaded Program Files\
Source: "c:\Windows\Downloaded Program Files"

---

TC-Param: "P#"
Param original: "c:\Windows\Downloaded Program Files\#"
Param no Quote: c:\Windows\Downloaded Program Files\#
SourceNoTrail c:\Windows\Downloaded Program Files
Drücken Sie eine beliebige Taste . . .





 Just an idea. Vielleicht hilft's einmal Jemanden.
Post Reply