65984
Goto Top

Zeilen aus txt mittels Batch auslesen

hallo zusammen,

ich habe zwei probleme an denen ich nicht mehr weiter komme:

1)
mein ziel ist es aus einer beliebigen txt datei deren länge und inhalt variabel sind die beiden letzten Zeile auslesen und anschließend je einer Variablen übergeben.

Könnt ihr mir da vielleicht weiterhelfen? Wäre echt cool.


2)

Bei einem anderen Beispiel wird die letzte Zeile ausgelesen.
for /F "Tokens=*" %%i in (irgendwas.txt) do Set string=%%i
Ziel hier ist diese Zeile zu vergleichen.

Diese sieht wie folgt aus:

2009-02-08 23:00 - Backup erfolgreich geschrieben

Datum ist variable das heisst ich könnte sie mit der systemvariable %DATE% vergleichen der rest ist konstant.

allerdings bekomm ich die variable string nicht mit einem tatsächlichen string verglichen...

Der Vergleich würde folgendermaßen aussehen

letzte zeile also %string% =="%date% 23:00 - Backup erfolgreich geschrieben"


Ich hoffe ich konnte mein problem deutlich genug beschreiben und danke euch schonmal für eure hilfe

lg

Content-Key: 114725

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

Printed on: April 25, 2024 at 20:04 o'clock

Mitglied: 77559
77559 Apr 27, 2009 at 10:19:08 (UTC)
Goto Top
High Azubi-DL / lg

1. Dafür gibt es eigentlich den Tail Befehl (auch Windows-Ports)
Das Nachbilden in Batch ist bei einem Windows ab w2k nicht schwer.

Zeilen Zählen mit find, 2 abziehen und mit more +x oder for /f "skip=x" nur die letzten 2 Zeilen ausgeben.


2. Wenn der Anfang von String genauso wie das Datum formatiert ist, Mit der Substring Funktion eben nur den
Angfang vergleichen.
if "%String:~0,10%"=="%date%" echo Datum ist von heute

Gruß
LotPings
Mitglied: 65984
65984 Apr 27, 2009 at 13:47:06 (UTC)
Goto Top
danke für deine antwort lotpings

1. kannst du vllt die Code zeile posten?

2.
mein problem war das die variable in anführungszeichen gesetzt werden musste und das das Maschinendatum welches in %date% steht ein anderes format hatte wie das welches zu überprüfen galt also musste ich das auch noch irgendwie ausgeben...am ende kam das raus:

if NOT "%Backuplog%"=="%date:~6,4%-%date:~3,2%-%date:~0,2% 10:41 - Backup erfolgreich geschrieben" goto :ERROR

also 2 ist abgeschlossen... 1 allerdings nicht face-sad
Mitglied: 77559
77559 Apr 27, 2009 at 14:42:24 (UTC)
Goto Top
Zitat von @65984:
danke für deine antwort lotpings

1. kannst du vllt die Code zeile posten?

Kann ich, ist mehr als eine Zeile, ich dachte allerdings DU solltest erstmal versuchen etwas mit der abstrakten Formulierung anzufangen.
@echo off&setlocal EnableDelayedExpansion
set Input=Hosts
:: Zeilen zählen
for /F %%A in ('find /C /V "" ^<%Input%') do set Lines=%%A  
:: Rechnen
set /A Lines-=2
:: Ausgeben auf den Bildschirm
More +%Lines% <%Input%
:: Ausgeben  in Variablen
set cnt=0
for /F "delims=" %%A in ('More +%Lines% ^<%Input%') Do set /A "cnt+=1"&set "Var!cnt!=%%A"  
set Var

Only "Braintested"

Gruß
LotPings