Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Datum auslesen mit 2 Schleifen funktioniert nicht

Frage Entwicklung Batch & Shell

Mitglied: bufferm44

bufferm44 (Level 1) - Jetzt verbinden

09.03.2008, aktualisiert 12.03.2008, 3433 Aufrufe, 4 Kommentare

Hallo zusammen!

mit folgender Batch lese ich das Datum (last modified) aus einer Datei aus:

01.
for /f "delims=" %%i in ('dir n:\input\1fertig.jpg /s /b /a-d') do set file_date=%%~ti 
02.
echo %file_date%
Nun würde ich das gerne für die Dateien 1fertig.jpg ... 20fertig.jpg machen

Aber:

01.
for /L %%i IN (1 1 20) do ( 
02.
for /f "delims=" %%i in ('dir n:\input\%%ifertig.jpg /s /b /a-d') do set file_date=%%~ti 
03.
echo %file_date% 
04.
)
zaubert nur Unsinn auf den Bildschirm.

Wo ist mein Denkfehler?

Vielen Dank schon mal für Eure Hilfe
Mitglied: bastla
09.03.2008 um 16:31 Uhr
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:
01.
@echo off & setlocal enabledelayedexpansion 
02.
for /L %%i IN (1 1 20) do ( 
03.
    for /f "delims=" %%i in ('dir n:\input\%%ifertig.jpg /s /b /a-d') do set file_date=%%~ti 
04.
    echo !file_date! 
05.
)
Alternativ dazu mit Verwendung eines Unterprogrammes:
01.
@echo off & setlocal 
02.
for /L %%i IN (1 1 20) do ( 
03.
    for /f "delims=" %%i in ('dir n:\input\%%ifertig.jpg /s /b /a-d') do call :ProcessFile "%%i" 
04.
05.
goto :eof 
06.
 
07.
:ProcessFile 
08.
set "file_date=%~t1" 
09.
echo %~1: %file_date% 
10.
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
Bitte warten ..
Mitglied: Biber
11.03.2008 um 16:03 Uhr
Moin bufferm44,

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

Grüße
Biber
Bitte warten ..
Mitglied: bufferm44
11.03.2008 um 22:38 Uhr
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

Tobi
Bitte warten ..
Mitglied: Biber
12.03.2008 um 08:58 Uhr
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.

...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
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst Powershell funktioniert nicht richtig beim Auslesen der letzten Zeile (5)

Frage von Peter32 zum Thema Batch & Shell ...

Google Android
Textdatei auf SD Karte auslesen funktioniert nicht (Oneplus One) (4)

Frage von lordzwieback zum Thema Google Android ...

Windows Server
Flickercode remote am Terminalserver auslesen funktioniert nicht (9)

Frage von immobrauch zum Thema Windows Server ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...