ingo.f
Goto Top

Fotos verschieben und umbenennen

Hallo,

Ich möchte gerne ein Verzeichnis durchsuchen f:/DCIM/PANORAMA dort sind Verzeichnisse nach folgender Nummerierung 100_1234
In jedem Ordner befinden sich die Fotos PANO0001.DNG bis PANO0026.DNG.

Ich möchte mit exiftool die Datum und Zeit umbenennen also z.B. P_200715153901_Muenster.DNG. Der Ordner soll dann P_2007153901_Muenster heissen.
Der Ordnername soll Datum und Zeit vom ersten Foto enthalten. Bei den Fotos überlege ich noch ob sie Ihr eigenes Datum und Uhrzeit als Name haben sollen, oder ob sie auch Alle die selbe Zeit haben sollen und dann von 01 bis 26 durchnummeriert werden sollen.

Bei meinem Versuch werden erst die Ordner gesucht und in eine Datei (DIR.list) geschrieben.

Alle Daten zu sammeln ist auch kein Problem (DNG.files) hinterher durchsuche ich die Ordner und möchte das erste Datum (DNG.OrdnerZeit) ermitteln. Dies macht aber die Probleme (PAN_TimeStamp).
Das ermitteln der Zeit klappt. Auch das Schreiben in die Datei (DNG.OrdnerZeit) klappt einwandfrei. Aber wenn ich sie einer variablen zuweise wird immer das letzte Datum vom letzten Durchlauf der Batch Datei genommen.

Habe gestern den ganzen Abend versucht mit Google und etlichen Versuchen das irgendwie zum laufen zu bekommen.

Ich bekomme die Zeit hier nicht in die Variable PAN-TimeStamp um sie weiter zu verarbeiten.

ZEIT0 ist richtig
ZEIT1 und ZEIT3 sind der letzte Wert vom letzten Durchlauf

Hoffe mir kann jemand den entscheidenden Hinweis geben....

hier mal die Batch:
 cls
@echo off
del DNG.files
del DIR.list
del DNG.OrdnerZeit

set PAN_BaseDir=d:/cloud/Panorama
set RAW_Remark=Muenster 

dir /a:d /b f:\DCIM\PANORAMA\100_023?. > DIR.list
type DIR.list

for /f "tokens=*" %%A in ('dir /b /s /a:d "F:\DCIM\PANORAMA\1??_023?."') do (  
	echo.
	echo.
	echo Found %%A

	d:/exiftool/exiftool.exe -T -d "%%y%%m%%d%%H%%M%%S" -DateTimeOriginal -SubSecTimeOriginal -FileName %%A\PANO002?.dng > DNG.files  
	d:/exiftool/exiftool.exe -T -d "%%y%%m%%d%%H%%M%%S" -DateTimeOriginal %%A\PANO0001.dng > DNG.OrdnerZeit  


	rem -------------------------------------------------------------------------------
	rem set /p tmpZeile=<"D:\exiftool\DNG.OrdnerZeit"  
	rem echo Files:
	type DNG.files
	
	echo Zeit:
	rem Setlocal EnableDelayedExpansion
	type DNG.OrdnerZeit
	for /f "delims=" %%C in (DNG.OrdnerZeit) do (  
		rem Setlocal EnableDelayedExpansion
		echo DNG ZEIT0: %%C
		set PAN_TimeStamp=%%C
		echo DNG ZEIT1: %PAN_TimeStamp%
	)
	rem set  PAN_TimeStamp=<"DNG.OrdnerZeit"  
	echo DNG ZEIT2: %%C
	echo DNG ZEIT3: %PAN_TimeStamp%

	echo.
	echo Panorama RAW files:
			rem d:/exiftool/exiftool.exe -T -d "%%y%%m%%d%%H%%M%%S" -DateTimeOriginal %%A\PANO0001.DNG > DNG.time  
			rem for /f %%B in ('type DNG.time') do set PAN_TimeStamp=%%B  
			rem Echo neues Datum %%A ist %PAN_TimeStamp%

		for /f "tokens=1,2,3,4 delims=	" %%I in (DNG.files) do (  
			if %%J EQU - set tfn=%%I
			if %%J NEQ - set tfn=%%I_%%J
			set tfn2=%%K

			echo %PAN_BaseDir%/P_%PAN_TimeStamp%_%RAW_Remark%/P_%%I.DNG %%K	
		)
pause 1

	)
del DNG.files
del DIR.list
del DNG.OrdnerZeit

d:

und hier die Ausgabe nach dem zweiten Durchlauf:
D:\exiftool\DNG.files konnte nicht gefunden werden
D:\exiftool\DIR.list konnte nicht gefunden werden
D:\exiftool\DNG.OrdnerZeit konnte nicht gefunden werden
100_0230
100_0231


Found F:\DCIM\PANORAMA\100_0230
200712154710    -       PANO0020.DNG
200712154712    -       PANO0021.DNG
200712154714    -       PANO0022.DNG
200712154716    -       PANO0023.DNG
200712154719    -       PANO0024.DNG
200712154721    -       PANO0025.DNG
200712154723    -       PANO0026.DNG
Zeit:
200712154629
DNG ZEIT0: 200712154629
DNG ZEIT1: 200712154802
DNG ZEIT2: %C
DNG ZEIT3: 200712154802

Panorama RAW files:
d:/cloud/Panorama/P_200712154802_Muenster /P_200712154710.DNG PANO0020.DNG
d:/cloud/Panorama/P_200712154802_Muenster /P_200712154712.DNG PANO0021.DNG
d:/cloud/Panorama/P_200712154802_Muenster /P_200712154714.DNG PANO0022.DNG
d:/cloud/Panorama/P_200712154802_Muenster /P_200712154716.DNG PANO0023.DNG
d:/cloud/Panorama/P_200712154802_Muenster /P_200712154719.DNG PANO0024.DNG
d:/cloud/Panorama/P_200712154802_Muenster /P_200712154721.DNG PANO0025.DNG
d:/cloud/Panorama/P_200712154802_Muenster /P_200712154723.DNG PANO0026.DNG
Drücken Sie eine beliebige Taste . . .


Found F:\DCIM\PANORAMA\100_0231
200712154842    -       PANO0020.DNG
200712154844    -       PANO0021.DNG
200712154846    -       PANO0022.DNG
200712154848    -       PANO0023.DNG
200712154851    -       PANO0024.DNG
200712154853    -       PANO0025.DNG
200712154855    -       PANO0026.DNG
Zeit:
200712154802
DNG ZEIT0: 200712154802
DNG ZEIT1: 200712154802
DNG ZEIT2: %C
DNG ZEIT3: 200712154802

Panorama RAW files:
d:/cloud/Panorama/P_200712154802_Muenster /P_200712154842.DNG PANO0020.DNG
d:/cloud/Panorama/P_200712154802_Muenster /P_200712154844.DNG PANO0021.DNG
d:/cloud/Panorama/P_200712154802_Muenster /P_200712154846.DNG PANO0022.DNG
d:/cloud/Panorama/P_200712154802_Muenster /P_200712154848.DNG PANO0023.DNG
d:/cloud/Panorama/P_200712154802_Muenster /P_200712154851.DNG PANO0024.DNG
d:/cloud/Panorama/P_200712154802_Muenster /P_200712154853.DNG PANO0025.DNG
d:/cloud/Panorama/P_200712154802_Muenster /P_200712154855.DNG PANO0026.DNG
Drücken Sie eine beliebige Taste . . .
D:\exiftool>

Content-Key: 587835

Url: https://administrator.de/contentid/587835

Printed on: April 23, 2024 at 19:04 o'clock

Member: TK1987
Solution TK1987 Jul 15, 2020 at 14:49:36 (UTC)
Goto Top
Moin,

Stichwort Variablenverzögerung.

Wenn du eine Variable innerhalb einer Befehlsgruppierung (in deinem Fall die For-Schleife) setzt; und diese Variable innerhalb der selben Gruppierung wieder aufrufen willst, musst du die Variable verzögern, sonst gibt sie dir den Wert aus, den sie vor der Gruppierung hatte.

daher:
setlocal EnableDelayedExpansion
an den Anfang deines Skripts; und dann die Variable PAN-TimeStamp in Ausrufezeichen statt Prozentzeichen aufrufen, also z.B.
echo !PAN-TimeStamp!

Gruß Thomas

PS: Mit Powershell wird das Leben leichter.
Member: ingo.f
ingo.f Jul 15, 2020 at 14:58:23 (UTC)
Goto Top
Danke mit der Variablenverzögerung hatte ich auch schon mal experimentiert.
Aber habe nirgendwo einen Hinweis gefunden dass man dann !variable! nehmen muss.

Werde mich mal bei Zeiten mit PowerShell beschäftigen...
Sollte bei Windows 10 ja wohl inzwischen standardmäßig dabei sein, oder?
Member: erikro
erikro Jul 15, 2020 at 15:34:12 (UTC)
Goto Top
Zitat von @ingo.f:
Werde mich mal bei Zeiten mit PowerShell beschäftigen...

Ohja, das solltest Du. Damit lassen sich solche Probleme viel eleganter lösen.

Sollte bei Windows 10 ja wohl inzwischen standardmäßig dabei sein, oder?

Seit Server 2008 und Windows 7. Wenn ich mich recht erinnere, wurde XP mit dem SP3 nachgerüstet. Da kann ich mich aber auch täuschen und es musste händisch nachinstalliert werden. face-wink Seit 2009 muss jeder MS-Server die PS unterstützen.