ppmk22
Goto Top

mit batch in txt lesen und schreiben

Hallo Team

Möchte eine batch-Datei erstellen die aus einer txt eine variable holt 1 dazuzählt wieder rein schreibt und speichert.
Habe heute schon viele Beiträge durchgearbeitet, aber leider nichts verstanden. Bin mir sicher, das man anhand der Beiträge hier im Forum so was zusammen gebastelt bekommt. Ich habe es aber nicht hin bekommen, da ich davon keinen Plan habe.
Und um klein anzufangen meine erste Frage.
Ich habe eine Datei E:\log.txt
Inhalt:
starts = 98
fehler = 12
verbindungen = 25

Nun würde ich gerne die mittels batch die Zahlen aus geben.

@echo off
echo Es waren %zahl% starts
echo Es waren %zahl% fehler
echo Es waren %zahl% verbindungen
pause

Wie sollte der richtige Code aussehen?

Gruß
Petra

Content-Key: 82212

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

Printed on: April 16, 2024 at 05:04 o'clock

Member: miniversum
miniversum Mar 03, 2008 at 18:05:38 (UTC)
Goto Top
Das müste so gehen:
@echo off
FOR /F "tokens=3 delims= " %%i in ('findstr /i /b "starts =" "E:\log.txt"') do set "starts=%%i"
FOR /F "tokens=3 delims= " %%i in ('findstr /i /b "fehler =" "E:\log.txt"') do set "fehler=%%i"
FOR /F "tokens=3 delims= " %%i in ('findstr /i /b "verbindungen =" "E:\log.txt"') do set "verbindungen=%%i"
echo Es waren %starts% starts
echo Es waren %fehler% fehler
echo Es waren %verbindungen% verbindungen
pause

miniversum
Member: ppmk22
ppmk22 Mar 03, 2008 at 18:49:19 (UTC)
Goto Top
Vielen Dank miniversum

Wie würde denn jetzt der Code sein, um den Zähler von starts um einen zu erhöhen?

Gruß Petra
Member: miniversum
miniversum Mar 03, 2008 at 19:07:34 (UTC)
Goto Top
das wäre dann
set /a starts=starts+1
oder
set /a starts+=1
Näheres kannst du in der Hilfe vom set befehl nachlesen (set /?)
Member: ppmk22
ppmk22 Mar 03, 2008 at 19:17:36 (UTC)
Goto Top
Okay, danke.

Und wie bekomme ich nun die 99 in die Datei?

Das geht doch eleganter als so, oder?

echo > E:\log.txt starts = %starts%
echo >> E:\log.txt fehler = %fehler%
echo >> E:\log.txt verbindungen = %verbindungen%

Wobei das auch nicht richtig hin haut.

Gruß Petra
Member: miniversum
miniversum Mar 03, 2008 at 20:23:35 (UTC)
Goto Top
Nicht ganz.
So gehts:
echo starts = %starts% > E:\log.txt
echo fehler = %fehler% >>E:\log.txt
echo verbindungen = %verbindungen% >>E:\log.txt
Wobei das halt wirklich die einfachste Lösung ist und auch nur wenn das alle Zeilen sind die in der Datei stehen. Wenn du wirklich Zeilen einfügen willst wird das dann etwas aufwendiger. Ist aber auch möglich.
Member: ppmk22
ppmk22 Mar 03, 2008 at 23:36:53 (UTC)
Goto Top
Wie würde den die bessere Lösung aussehen?

Gruß Petra
Member: Biber
Biber Mar 04, 2008 at 06:57:05 (UTC)
Goto Top
Moin ppmk22,

suche mal mittels der Forumssuche nach "Zeile in txt einfügen" oder ähnlichem.
Dann findest Du einige Beispiele.
Ein Nettes ist Batch - String suchen und in der Datei Zeile mit berechneten Inhalt einfügen.

Da Batch bzw. die CMD.exe grundsätzlich zeilenorientiert arbeitet und außerdem nicht "in" einer Datei ändern kann (sondern immer nur aus einem Kanal den Input lesen und in einen anderen den Output schreiben), deshalb solltest Du zum Texte ändern nur dann Batch verwenden, wenn nun gar nichts anderes zur Hand ist.
Unproblematisch ist immer nur das komplette Neu-Schreiben einer Datei oder das Löschen/Hinten-Anfügen von Zeilen.
Insbesondere wenn Deine Datei (zumindest in der Version 2.0) den Aufbau einer Windows *.INI-Datei haben wird, dann verwende möglichst früh einen der vielen Freeware INI-Datei-Bearbeiter.

Oder lass uns hier im Forum einen zusammenschroten - aber dann mit VBS statt mit native Batch.

Grüße
Biber
Member: ppmk22
ppmk22 Mar 05, 2008 at 16:29:30 (UTC)
Goto Top
Danke für alles

Gruß
Petra