Datum auslesen mit 2 Schleifen funktioniert nicht
Hallo zusammen!
mit folgender Batch lese ich das Datum (last modified) aus einer Datei aus:
Nun würde ich das gerne für die Dateien 1fertig.jpg ... 20fertig.jpg machen
Aber:
zaubert nur Unsinn auf den Bildschirm.
Wo ist mein Denkfehler?
Vielen Dank schon mal für Eure Hilfe
mit folgender Batch lese ich das Datum (last modified) aus einer Datei aus:
for /f "delims=" %%i in ('dir n:\input\1fertig.jpg /s /b /a-d') do set file_date=%%~ti
echo %file_date%
Nun würde ich das gerne für die Dateien 1fertig.jpg ... 20fertig.jpg machen
Aber:
for /L %%i IN (1 1 20) do (
for /f "delims=" %%i in ('dir n:\input\%%ifertig.jpg /s /b /a-d') do set file_date=%%~ti
echo %file_date%
)
zaubert nur Unsinn auf den Bildschirm.
Wo ist mein Denkfehler?
Vielen Dank schon mal für Eure Hilfe
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 82649
Url: https://administrator.de/forum/datum-auslesen-mit-2-schleifen-funktioniert-nicht-82649.html
Ausgedruckt am: 24.02.2025 um 06:02 Uhr
4 Kommentare
Neuester Kommentar
Hallo bufferm44!
"Denkfehler" würde ich es nicht nennen, eher "mangelnde Berücksichtigung der Besonderheiten der Variablenauflösung in for-Schleifen"
...
Gemeint ist damit das Stichwort "delayedexpansion" (dazu gibt es eine Menge Kommentare hier im Forum).
Eine Lösung könnte so aussehen:
Alternativ dazu mit Verwendung eines Unterprogrammes:
Ich finde es sinnvoll, den gesamten Dateipfad an das Unterprogramm zu übergeben und erst dort das Datum auszulesen - so kann auch noch auf die Datei selbst (als %1 - siehe "echo"-Zeile) zugegriffen werden.
Grüße
bastla
"Denkfehler" würde ich es nicht nennen, eher "mangelnde Berücksichtigung der Besonderheiten der Variablenauflösung in for-Schleifen"
Gemeint ist damit das Stichwort "delayedexpansion" (dazu gibt es eine Menge Kommentare hier im Forum).
Eine Lösung könnte so aussehen:
@echo off & setlocal enabledelayedexpansion
for /L %%i IN (1 1 20) do (
for /f "delims=" %%i in ('dir n:\input\%%ifertig.jpg /s /b /a-d') do set file_date=%%~ti
echo !file_date!
)
Alternativ dazu mit Verwendung eines Unterprogrammes:
@echo off & setlocal
for /L %%i IN (1 1 20) do (
for /f "delims=" %%i in ('dir n:\input\%%ifertig.jpg /s /b /a-d') do call :ProcessFile "%%i"
)
goto :eof
:ProcessFile
set "file_date=%~t1"
echo %~1: %file_date%
goto :eof
Grüße
bastla
Moin bufferm44,
danke für die Rückmeldung.
Wie ich allerdings manchmal in anderen Kommentaren lese, ist Google bezüglich dieser Details noch relativ ahnungslos.
...na ja, WTF is' schon Google...^
Ich setze den grünen Haken mal. Sollten wider Erwarten noch Nach-Fragen auftauchen, scheue Dich nicht....
Grüße
Biber
danke für die Rückmeldung.
aber ich denke mal wenn das ein bekanntes Phänomen ist dann ist es erledigt...
Hmm, sagen wir so: regelmäßigen BesucherInnen dieses Forums ist es schon vertraut.Wie ich allerdings manchmal in anderen Kommentaren lese, ist Google bezüglich dieser Details noch relativ ahnungslos.
...na ja, WTF is' schon Google...^
Ich setze den grünen Haken mal. Sollten wider Erwarten noch Nach-Fragen auftauchen, scheue Dich nicht....
Grüße
Biber