Zahlen aus einer Datei auslesen und mit Batch addieren
Zuerst möchte ich mich schon mal im vorraus bei allen bedanken die mir helfen das Problem zu lösen.
Hallo zusammen,
ich habe mir eine Batch gebastelt um Daten aus meinen Logfiles rauszufiltern. Nun stehe ich aber vor einem Problem das ich alleine nicht lösen kann.
Meine Batch Datei soll anhand eines FOR Befehls (denke das ist das Beste) aus einem Logfile Zahlen rausfiltern (stehen in jeder Zeile an der selben Position, sollte also mit tokens=... gehen) und diese dann addieren. Das Ergebnis soll dann in eine Datei geschrieben werden. Die Zahlen haben kein Komma !
Einige werden sagen, nimm doch VBS ! Aber nein, ich bin der Meinung das muss auch mit DOS gehen.
Freue mich über eure Beiträge.
Vielen Dank.
Hallo zusammen,
ich habe mir eine Batch gebastelt um Daten aus meinen Logfiles rauszufiltern. Nun stehe ich aber vor einem Problem das ich alleine nicht lösen kann.
Meine Batch Datei soll anhand eines FOR Befehls (denke das ist das Beste) aus einem Logfile Zahlen rausfiltern (stehen in jeder Zeile an der selben Position, sollte also mit tokens=... gehen) und diese dann addieren. Das Ergebnis soll dann in eine Datei geschrieben werden. Die Zahlen haben kein Komma !
Einige werden sagen, nimm doch VBS ! Aber nein, ich bin der Meinung das muss auch mit DOS gehen.
Freue mich über eure Beiträge.
Vielen Dank.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 117543
Url: https://administrator.de/contentid/117543
Ausgedruckt am: 22.11.2024 um 18:11 Uhr
11 Kommentare
Neuester Kommentar
Hallo Bobbel323 und willkommen im Forum!
Da die Beschreibung Deines Logfiles etwas sparsam ausgefallen ist, musst Du die "for"-Schleife eben selbst anpassen:
Grüße
bastla
Da die Beschreibung Deines Logfiles etwas sparsam ausgefallen ist, musst Du die "for"-Schleife eben selbst anpassen:
@echo off & setlocal
set /a Summe=0
for /f "tokens=2 delims=," %%i in (D:\Logfile.log) do set /a Summe+=%%i
>D:\Ergebnis.txt echo %Summe%
bastla
Hi,
Sollte mit set /a gehen. Les doch mal hier:
http://de.wikibooks.org/wiki/Batch-Programmierung:_Programmierungshilfe ...
Viel Erfolg,
TWAWLW
PS: Hoppla, da war wohl einer schneller ...
Sollte mit set /a gehen. Les doch mal hier:
http://de.wikibooks.org/wiki/Batch-Programmierung:_Programmierungshilfe ...
Viel Erfolg,
TWAWLW
PS: Hoppla, da war wohl einer schneller ...
Hallo Bobbel323!
Das Ergebnis kannst Du erst nach Ende der Schleife schreiben, daher etwa so:
Noch eine Anmerkung: Da es sich um relativ hohe Zahlenwerte handelt, wirst Du früher oder später an die Genauigkeitsgrenze der Berechnungen in CMD stoßen - (positive) Zahlen über 2147483647 (2^31 - 1) kannst Du per CMD-Artihmetik mit "set /a" nicht verarbeiten ...
Grüße
bastla
[Edit] Prüfung auf "leere" Eingabe des Dateinamens hinzugefügt [/Edit]
Das Ergebnis kannst Du erst nach Ende der Schleife schreiben, daher etwa so:
@echo off & setlocal
set "FILENAME="
set /p FILENAME=Enter a logfile name to start:
if not defined FILENAME (echo Keine Logdatei angegeben! & goto :eof)
REM #Creating variables
set "Datei=sort.txt"
set "Bak=.bak"
set /a LineNo=0
set /a Summe=0
for /f "usebackq skip=1 tokens=2" %%i in ("%FILENAME%") do set /a Summe+=%%i
>%FILENAME%_summary.txt echo %Summe%
Grüße
bastla
[Edit] Prüfung auf "leere" Eingabe des Dateinamens hinzugefügt [/Edit]
Hallo Bobbel323!
Wenn Du oberhalb des Batch-Listings auf "Quelltext" klickst, kannst Du den von mir geposteten Code (fast - am Ende jeder Zeile hängt gern mal ein zusätzliches Leerzeichen) 1:1kopieren - dann sollte es auch nicht passieren, dass die Zeile 10 und 11 (bzw jetzt neu Zeilen 12 und 13) zu einer einzigen Zeile werden ...
Ich habe oben noch zwei kleine Details eingearbeitet (die allerdings nichts mit dem von Dir angesprochenen Problem zu tun haben).
Grüße
bastla
Wenn Du oberhalb des Batch-Listings auf "Quelltext" klickst, kannst Du den von mir geposteten Code (fast - am Ende jeder Zeile hängt gern mal ein zusätzliches Leerzeichen) 1:1kopieren - dann sollte es auch nicht passieren, dass die Zeile 10 und 11 (bzw jetzt neu Zeilen 12 und 13) zu einer einzigen Zeile werden ...
Ich habe oben noch zwei kleine Details eingearbeitet (die allerdings nichts mit dem von Dir angesprochenen Problem zu tun haben).
Grüße
bastla
Hallo Bobbel323!
Sofern Du mit etwas Ungenauigkeit leben kannst, wäre etwa folgende Vorgangsweise möglich:
Bei der Division erhältst Du als Ergebnis immer nur den ganzzahligen Anteil, die Reste fallen unter den Tisch ...
Grüße
bastla
P.S.: Was ist so schlimm an VB(S)?
Sofern Du mit etwas Ungenauigkeit leben kannst, wäre etwa folgende Vorgangsweise möglich:
for /f "usebackq skip=1 tokens=2" %%i in ("%FILENAME%") do set /a Summe+=%%i/1024
Grüße
bastla
P.S.: Was ist so schlimm an VB(S)?