
115129
23.06.2014, aktualisiert um 20:18:45 Uhr
Batch - Dezimalzahlen-Addition des Inhalts zweier Dateien mit anschließendem zurückschreiben
Hallo,
ich müsste mich wieder an Euch wenden, da ich nicht weiterkomme um mein Vorhaben umzusetzen.
Das Problem liegt in den letzten zwei Zeilen:
Ich lese mit...
(die Zeile mit dem Wort "dashier" wird rausgefiltert)
Nun möchte ich, dass das Script die Zahlen der "temp.txt" zu den Zahlen in "temp1.txt" addiert.
Das Ergebnis sollte demnach in "archiv.txt" folgendermaßen aussehen:
Hat die Verrechnung stattgefunden, sollen die Werte...
(Siehe tokens & delims der letzten zwei Zeilen!)
Mein derzeitiger Code:
Für jede Hilfe bin ich Dankbar
Gruß,
Blattlaus
ich müsste mich wieder an Euch wenden, da ich nicht weiterkomme um mein Vorhaben umzusetzen.
Das Problem liegt in den letzten zwei Zeilen:
Ich lese mit...
for /f "tokens=1-12* delims=- " %%a in (%IN%) do echo %%l %%i>>"%TEMP%"
...und...for /f "tokens=1-12* delims=- " %%a in (%OUT%) do echo %%l %%i>>"%TEMP1%"
...den Inhalt zweier Dateien ein und erhalte in die Ausgabedatei "temp.txt"...Test 1
TestTest 46
dashier 2
TestTestTest 32
...und in die Ausgabedatei "temp1.txt"...TestTest 46
dashier 2
TestTestTest 32
Test 834
TestTest 46
TestTestTest 43942
...ein.TestTest 46
TestTestTest 43942
(die Zeile mit dem Wort "dashier" wird rausgefiltert)
Nun möchte ich, dass das Script die Zahlen der "temp.txt" zu den Zahlen in "temp1.txt" addiert.
Das Ergebnis sollte demnach in "archiv.txt" folgendermaßen aussehen:
Test 835
TestTest 46
TestTestTest 43974
TestTest 46
TestTestTest 43974
Hat die Verrechnung stattgefunden, sollen die Werte...
Test 835
TestTest 46
TestTestTest 43974
nach set "OUT=c:\archiv.txt" zurückgeschrieben und die vorhandenen überschrieben werden.TestTest 46
TestTestTest 43974
(Siehe tokens & delims der letzten zwei Zeilen!)
Mein derzeitiger Code:
@echo on & setlocal
set "IN=c:\log"
set "OUT=c:\archiv.txt"
set "TEMP=c:\_TEMP.txt"
set "TEMP1=c:\_TEMP1.txt"
set "Entf=dashier"
:Stichwörter suchen; wenn gefunden Zeile löschen
findstr /v /i "%Entf%" "%IN%">"%OUT%"
:Zahlen-Addition mit folgendem rückschreiben
for /f "tokens=1-12* delims=- " %%a in (%IN%) do echo %%l %%i>>"%TEMP%"
for /f "tokens=1-12* delims=- " %%a in (%OUT%) do echo %%l %%i>>"%TEMP1%"
...
Für jede Hilfe bin ich Dankbar
Gruß,
Blattlaus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 241602
Url: https://administrator.de/forum/batch-dezimalzahlen-addition-des-inhalts-zweier-dateien-mit-anschliessendem-zurueckschreiben-241602.html
Ausgedruckt am: 25.04.2025 um 10:04 Uhr
7 Kommentare
Neuester Kommentar
Hallo @115129,
wenn du die Strings so aufteilst,dass du die Zahlen in Variablen schreiben kannst, kannst du
Hoffe das hilft!
Gruß,
@Snowman25
wenn du die Strings so aufteilst,dass du die Zahlen in Variablen schreiben kannst, kannst du
SET /A
verwenden, um die Zahlen zu addieren.Hoffe das hilft!
Gruß,
@Snowman25
Zum "Wie genau" habe ich mal eine Anleitung geschrieben: Rechnen in Batch
Hier mal ein Ansatz Ungetestet:
Gruß,
Andreas
Hier mal ein Ansatz Ungetestet:
@ECHO off
SETLOCAL EnableDelayedExpansion
set "IN=c:\log.txt"
set "OUT=c:\archiv.txt"
set "TEMP=c:\_TEMP.txt"
set "TEMP1=c:\_TEMP1.txt"
set "Entf=dashier"
:: Stichwörter suchen; wenn gefunden Zeile löschen
findstr /v /i "%Entf%" "%IN%">"%OUT%"
SET line=0
FOR /F "delims=" %%a IN (%IN%) DO (
CALL :set_last %%a
SET result_a=!last!
FOR /F "skip=!line! delims=" %%b IN (%OUT%) DO (
CALL :set_last %%b
SET result_b=!last!
GOTO :CONTINUE
)
:CONTINUE
SET /A result=!result_a! + !result_b!
:: TODO:
:: ECHO Anfang des Strings bis zum letzten Token und hänge %result% an.
SET /A line=!line!+1
)
GOTO :EOF
:set_last
FOR %%x IN (%*) DO SET last=%%x
GOTO :EOF
Gruß,
Andreas
Hi Blattlaus,
beim schreiben der Batch bin ich davon ausgegangen, dass die letzte Zeichengruppe deiner Zeilen die Nummer enthält.
Leider scheint das in deinem Log nicht so zu sein, weshalb in
Wie es aussieht ist das 9te Token das, welches du "verrechnet" haben möchtest? Da wird das ganze etwas komplizierter.
Vielleicht wäre es doch besser, das ganze als Excel-Datei zu öffnen und dann per VBA zu verrechnen.
Gruß,
@Snowman25
beim schreiben der Batch bin ich davon ausgegangen, dass die letzte Zeichengruppe deiner Zeilen die Nummer enthält.
Leider scheint das in deinem Log nicht so zu sein, weshalb in
result_a
und result_b
keine Zahlen stehen und somit auch nicht verrechnet werden können.Wie es aussieht ist das 9te Token das, welches du "verrechnet" haben möchtest? Da wird das ganze etwas komplizierter.
Vielleicht wäre es doch besser, das ganze als Excel-Datei zu öffnen und dann per VBA zu verrechnen.
Gruß,
@Snowman25