Ein Datum aus einer Txt filtern mit for-schleife
Hallo alle Zusammen, ich bin der Neue!
Ich finde euer Forum echt Klasse und es ist mir hier schon oft geholfen worden nur durch lesen,
allerdings habe ich jetzt ein kleines Problem, bzw komme ich einfach nicht auf die Lösung.
und zwar möchte ich gerne mit Batch ein Datum einer Datei herausfinden und als Variable setzen
das Einzige was mir als mögliche Lösung eingefallen ist, ist ein kleiner Umweg über eine temp.txt
Beispiel:
und würde ich dann "dir found.rar >> temp.txt" eingeben
in der Temp.txt befindet sich dann das:
Datenträger in Laufwerk C: ist XYZ
Volumeseriennummer: XYZ
Verzeichnis von C:\test
23.09.2006 02:26 181.343 found.rar
1 Datei(en) 181.343 Bytes
0 Verzeichnis(se), 27.410.919.424 Bytes frei
so jetzt könnte ich doch mit einer For-Schleife bestimmt das Datum "herausfiltern" und als Variable setzen,
allerdings komme ich nicht auf die Lösung :/
Ich hoffe es kann mir jemand helfen oder jemand hat eine andere "direkte" Lösung
Vielen Dank im Vorraus
Ucbalu
Ich finde euer Forum echt Klasse und es ist mir hier schon oft geholfen worden nur durch lesen,
allerdings habe ich jetzt ein kleines Problem, bzw komme ich einfach nicht auf die Lösung.
und zwar möchte ich gerne mit Batch ein Datum einer Datei herausfinden und als Variable setzen
das Einzige was mir als mögliche Lösung eingefallen ist, ist ein kleiner Umweg über eine temp.txt
Beispiel:
und würde ich dann "dir found.rar >> temp.txt" eingeben
in der Temp.txt befindet sich dann das:
Datenträger in Laufwerk C: ist XYZ
Volumeseriennummer: XYZ
Verzeichnis von C:\test
23.09.2006 02:26 181.343 found.rar
1 Datei(en) 181.343 Bytes
0 Verzeichnis(se), 27.410.919.424 Bytes frei
so jetzt könnte ich doch mit einer For-Schleife bestimmt das Datum "herausfiltern" und als Variable setzen,
allerdings komme ich nicht auf die Lösung :/
Ich hoffe es kann mir jemand helfen oder jemand hat eine andere "direkte" Lösung
Vielen Dank im Vorraus
Ucbalu
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 41029
Url: https://administrator.de/forum/ein-datum-aus-einer-txt-filtern-mit-for-schleife-41029.html
Ausgedruckt am: 14.04.2025 um 08:04 Uhr
3 Kommentare
Neuester Kommentar
Moin Ucbalu,
wenn Du es über den Weg mit einer Zwischendatei machen willst, dann musst Du erst deine Sicht auf die Datei auf die eine für Dich interessante Zeile beschränken.
Dazu bietet sich ein "Find"- oder "FindStr"-Aufruf mit dem Suchbegriff Dateiname (in Deinem Beispiel "found.rar") an.
Das wäre ja dieser Zwischenschritt:
Diese eine Zeile wiederum liest Du mit einer FOR /F...IN..DO-Anweisung ein.
Und speicherst die Variable in %myFiledate% oder so etwas.
Im Batch entsprechend ein %-Zeichen mehr bei der Zählvariablen %i:
for /f %%i in ('dir found.rar^|find /i "found.rar"') do set MyFiledate=%%i
Gruß
Biber
wenn Du es über den Weg mit einer Zwischendatei machen willst, dann musst Du erst deine Sicht auf die Datei auf die eine für Dich interessante Zeile beschränken.
Dazu bietet sich ein "Find"- oder "FindStr"-Aufruf mit dem Suchbegriff Dateiname (in Deinem Beispiel "found.rar") an.
Das wäre ja dieser Zwischenschritt:
1
2
3
4
5
2
3
4
5
>type temp.txt|find /i "found.rar"
23.09.2006 02:26 181.343 found.rar
REM -oder-, gleiches Ergebnis ohne Tempdatei:
dir found.rar|find /i "found.rar"
23.09.2006 02:26 181.343 found.rar
Diese eine Zeile wiederum liest Du mit einer FOR /F...IN..DO-Anweisung ein.
Und speicherst die Variable in %myFiledate% oder so etwas.
1
2
3
2
3
>REM Demo am CMD-Prompt:
>for /f %i in ('dir found.rar^|find /i "found.rar"') do @set MyFileDate=%i
23.09.2006
Im Batch entsprechend ein %-Zeichen mehr bei der Zählvariablen %i:
for /f %%i in ('dir found.rar^|find /i "found.rar"') do set MyFiledate=%%i
Gruß
Biber
Geht auch.
Demo am CMD-Prompt:
[Alle Befehle mit voranstehendem ">" kannst Du so an Deinem Prompt eingeben und es Schritt für Schritt nachturnen]
Auf Dein Beispiel oben angewendet wäre es dann im Batch:
Die ganze FOR /F-Syntax findest Du unter "FOR /?" am CMD-Prompt ganz brauchbar erklärt.
Im Bereich Batch & Shell findest Du auch ein kleines Tutorial zum Thema "Umgang mit Datums- und Zeitvariablen im Batch".
Gruß Biber
Demo am CMD-Prompt:
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
>set mydate=%date%
>set mydate
mydate=27.09.2006
>for /f "tokens=1-3 delims=." %i in ("%mydate%") do set "myvar1=%i" & set "myvar2=%j" & set "myvar3=%k"
set "myvar1=27" & set "myvar2=09" & set "myvar3=2006"
>set my
mydate=27.09.2006
myvar1=27
myvar2=09
myvar3=2006
Auf Dein Beispiel oben angewendet wäre es dann im Batch:
1
2
3
2
3
.... [...in den Tiefen deiner Batchdatei....]
for /f "tokens=1-3 delims=." %%i in ('dir found.rar^|find /i "found.rar"') do set "MyTT=%%i" & set "myMM=%%j" & set "MyYYYY=%%k"
....
Die ganze FOR /F-Syntax findest Du unter "FOR /?" am CMD-Prompt ganz brauchbar erklärt.
Im Bereich Batch & Shell findest Du auch ein kleines Tutorial zum Thema "Umgang mit Datums- und Zeitvariablen im Batch".
Gruß Biber
Klar, Ucbalu,
Du kannst keine, einen ohne mehrere delims angeben.
In Deinem ersten Beispiel auch noch ein zusätzliches Leerzeichen.
Das ist mir entweder beim CopyPaste nach HTML verloren gegangen oder ich habe es vergessen...
Oder, wenn das Datum mal mit "-", mal mit "/", mal mit "." daherkommt, eben "delims=-/."
Nachzulesen ist das
- bei M$ z.B. in der Hilfe zum FOR-Befehl,
- in vielen guten Tankstellen-PC-Zeitschriften oder
- hier im Forum im Bereich "Batch & Shell" in dem Tutorial .
--> auch speziell auf die Datumswert-Aufdröselung eingehend.
Grüße
Biber
Du kannst keine, einen ohne mehrere delims angeben.
In Deinem ersten Beispiel auch noch ein zusätzliches Leerzeichen.
Das ist mir entweder beim CopyPaste nach HTML verloren gegangen oder ich habe es vergessen...
1
2
3
2
3
>for /f "tokens=1-3 delims=. " %i in ("29.09.2006 21:05") do set "myvar1=%i" & set "myvar2=%j" & set "myvar3=%k"
>set "myvar1=29" & set "myvar2=09" & set "myvar3=2006"
Oder, wenn das Datum mal mit "-", mal mit "/", mal mit "." daherkommt, eben "delims=-/."
Nachzulesen ist das
- bei M$ z.B. in der Hilfe zum FOR-Befehl,
- in vielen guten Tankstellen-PC-Zeitschriften oder
- hier im Forum im Bereich "Batch & Shell" in dem Tutorial .
--> auch speziell auf die Datumswert-Aufdröselung eingehend.
Grüße
Biber