bufferm44
Goto Top

Datum auslesen mit 2 Schleifen funktioniert nicht

Hallo zusammen!

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 face-smile

Content-ID: 82649

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

Ausgedruckt am: 25.11.2024 um 16:11 Uhr

bastla
bastla 09.03.2008 um 16:31:45 Uhr
Goto Top
Hallo bufferm44!

"Denkfehler" würde ich es nicht nennen, eher "mangelnde Berücksichtigung der Besonderheiten der Variablenauflösung in for-Schleifen" face-wink ...

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
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
Biber
Biber 11.03.2008 um 16:03:54 Uhr
Goto Top
Moin bufferm44,

Nachfrage: Kann ein Haken dran und wer von uns beiden soll ihn setzen?

Grüße
Biber
bufferm44
bufferm44 11.03.2008 um 22:38:44 Uhr
Goto Top
Moin!

Sorry für die späte Antwort, bin gerade auf Reise. Kann es leider erst die Tage testen aber ich denke mal wenn das ein bekanntes Phänomen ist dann ist es erledigt.

Vielen Dank auf jeden Fall noch mal dafür face-smile

Tobi
Biber
Biber 12.03.2008 um 08:58:02 Uhr
Goto Top
Moin bufferm44,

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. face-wink

...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