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, 3450 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 ..
Ähnliche Inhalte
Batch & Shell
gelöst Batch xls nach aktuellem Datum auslesen und email senden (14)

Frage von michi-ffm zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch zum auslesen bestimmter Einträge der IPconfig mit for-Schleifen (12)

Frage von Dantaros zum Thema Batch & Shell ...

Windows Userverwaltung
Mit Powershell am AD Controller die aktiven Usersessions auslesen (1)

Frage von arduino zum Thema Windows Userverwaltung ...

Neue Wissensbeiträge
Heiß diskutierte Inhalte
LAN, WAN, Wireless
Zwei Subnetze mit je eigenem Router und Internetzugang verbinden (17)

Frage von hannsgmaulwurf zum Thema LAN, WAN, Wireless ...

Windows Server
WIndows Server 2016 core auf dem Intel NUC NUC5i5RYK i5 5250U (17)

Frage von IxxZett zum Thema Windows Server ...

Windows Server
gelöst Einzelnes Windows Update über GPO deinstallieren (16)

Frage von lordofremixes zum Thema Windows Server ...