Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Zahlen aus einer Datei auslesen und mit Batch addieren

Mitglied: Bobbel323

Bobbel323 (Level 1) - Jetzt verbinden

05.06.2009, aktualisiert 10:54 Uhr, 15236 Aufrufe, 11 Kommentare

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.
Mitglied: holzholer
05.06.2009 um 11:01 Uhr
Hallo,

mit SET /A kann man zahlen in Variablen speichern und dann auch damit rechnen. Weitere Infos hierzu findest du mit SET /? und natürlich in der Suche hier im Forum.

Grüße
Bitte warten ..
Mitglied: bastla
05.06.2009 um 11:02 Uhr
Hallo Bobbel323 und willkommen im Forum!

Da die Beschreibung Deines Logfiles etwas sparsam ausgefallen ist, musst Du die "for"-Schleife eben selbst anpassen:
01.
@echo off & setlocal 
02.
set /a Summe=0 
03.
 
04.
for /f "tokens=2 delims=," %%i in (D:\Logfile.log) do set /a Summe+=%%i 
05.
>D:\Ergebnis.txt echo %Summe%
Grüße
bastla
Bitte warten ..
Mitglied: TWAWLW
05.06.2009 um 11:04 Uhr
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 ...
Bitte warten ..
Mitglied: Bobbel323
05.06.2009 um 13:21 Uhr
Hallo und danke für die Tips:

@bastla:

Hier ein Teil meines Test.Scripts:


echo Enter a logfile name followed by CRTL+Z to start:
copy con filename.tmp
echo.
echo DONE

REM #Copy user interaction to var FILENAME
for /f "delims=~" %%i in (filename.tmp) do set FILENAME=%%i

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%

Ergebnis:
D:\>set /a Summe+=54870865 echo 0 1>>D:\ABCI-D-Tapes-05.txt_summary.txt
Missing operator.

D:\>set /a Summe+=136935065 echo 0 1>>D:\ABCI-D-Tapes-05.txt_summary.txt
Missing operator.

D:\>set /a Summe+=327903 echo 0 1>>D:\ABCI-D-Tapes-05.txt_summary.txt
Missing operator.

D:\>set /a Summe+=55483411 echo 0 1>>D:\ABCI-D-Tapes-05.txt_summary.txt
Missing operator.

D:\>set /a Summe+=139899871 echo 0 1>>D:\ABCID-Tapes-05.txt_summary.txt
Missing operator.

D:\>set /a Summe+=134457 echo 0 1>>D:\ABCI-D-Tapes-05.txt_summary.txt
Missing operator.

D:\>set /a Summe+=137028631 echo 0 1>>D:\ABCI-D-Tapes-05.txt_summary.txt
Missing operator.

D:\>set /a Summe+=54628156 echo 0 1>>D:\ABCI-D-Tapes-05.txt_summary.txt
Missing operator.

Mein Texfile sieht in etwa so aus:
"Tape" "Data Size in Kilobytes" "Last Time Written Unix Time"
ABCI 534 135403085 1241132402
ABCI 539 54894796 1241136062


Wobei mich nur die Zahl im im 2.Feld interessiert.
Bitte warten ..
Mitglied: bastla
05.06.2009 um 15:41 Uhr
Hallo Bobbel323!

Das Ergebnis kannst Du erst nach Ende der Schleife schreiben, daher etwa so:
01.
@echo off & setlocal 
02.
set "FILENAME=" 
03.
set /p FILENAME=Enter a logfile name to start: 
04.
if not defined FILENAME (echo Keine Logdatei angegeben! & goto :eof) 
05.
 
06.
REM #Creating variables 
07.
set "Datei=sort.txt" 
08.
set "Bak=.bak" 
09.
set /a LineNo=0 
10.
set /a Summe=0 
11.
 
12.
for /f "usebackq skip=1 tokens=2" %%i in ("%FILENAME%") do set /a Summe+=%%i 
13.
>%FILENAME%_summary.txt echo %Summe%
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]
Bitte warten ..
Mitglied: Bobbel323
05.06.2009 um 16:04 Uhr
Hallo Bastla,

vielen Dank für deine Hilfe, allerdings verstehe ich hier etwas nicht so ganz.

Wenn ich deine Batch so ausführe dann bekomme ich weiterhin den Missing Operator Fehler

D:\>for /F "usebackq skip=1 tokens=2" %i in ("D:\GIS-D-Tapes-05.txt") do set /a

D:\>set /a Summe+=135403085 echo 0 1>D:\GIS-D-Tapes-05.txt_summary.txt
Missing operator.

D:\>set /a Summe+=54894796 echo 0 1>D:\GIS-D-Tapes-05.txt_summary.txt
Missing operator.

usw.

Was mache ich hier falsch ?

Danke und viele Grüße
Bitte warten ..
Mitglied: bastla
05.06.2009 um 16:11 Uhr
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
Bitte warten ..
Mitglied: Bobbel323
08.06.2009 um 11:17 Uhr
Hallo Bastla,

vielen Dank für deine Hilfe, funktioniert jetzt alles bestens.

Leider bin ich jetzt an der von dir erwähnten Problematik angelangt:

(positive) Zahlen über 2147483647 (2^31 - 1) kannst Du per CMD-Artihmetik mit "set /a" nicht verarbeiten ...

Muss also etwas umdenken und evtl. doch noch etwas mit VB arbeiten

Grüße
Bitte warten ..
Mitglied: bastla
08.06.2009 um 20:31 Uhr
Hallo Bobbel323!

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
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)?
Bitte warten ..
Mitglied: Landstreicher
19.01.2012 um 11:50 Uhr
Ich weiss, das Thema ist alt ... aber schaut mal was passiert wenn man eine zu große Zahl setzt ...

D:\>set /a summe=2147483647
2147483647
D:\>set /a summe=2147483648
-2147483648

genau, es wird negativ und damit funktioniert die "Rechnung" nicht mehr ...

jemand eine Lösung parat ?

gruß Landstreicher
Bitte warten ..
Mitglied: bastla
19.01.2012 um 12:31 Uhr
Hallo Landstreicher!
jemand eine Lösung parat ?
In der CMD-Shell sind direkte Berechnungen nur mit Werten zwischen -2^31 und +2^31-1 möglich - daher ggf auf eine andere Sprache (zB VBS) ausweichen ...

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Zahlen in Batch addieren...
gelöst Frage von Hans87Batch & Shell2 Kommentare

Hallo, ich habe ein batch skript geschrieben, das zwei SQL Abfragen ausführt. Beide geben Werte zurück. Die zurückgegebenen Werte ...

Batch & Shell

Mit Batch in Bestimmter Zeilennummer Wert zu Zahl addieren

gelöst Frage von SeppaeBatch & Shell23 Kommentare

Hallo alle miteinander! Ich habe folgende Aufgabenstellung bekommen und komme momentan einfach nicht weiter: Ich soll in einer .txt ...

Batch & Shell

In Batch Zählen

gelöst Frage von mavericklpBatch & Shell2 Kommentare

Guten Morgen zusammen, Ich habe ein kleines Problem mit einer Zählschleifer in der Batch Datei. Und zwar werden die ...

Batch & Shell

BATCH ini Datei Datei auslesen

gelöst Frage von Juergen42Batch & Shell2 Kommentare

Hallo zusammen, ich möchte eine ini Datei auslesen mit folgenden Aufbau INHALT DER INI ID=30 NAME="test1" PFAD="K:\Kontoauszug\Test1\*.pdf" PFAD_S="K:\Kontoauszug\Test1\Sicherung\" ID=28 ...

Neue Wissensbeiträge
Microsoft
ARD-Doku - Das Microsoft Dilemma
Tipp von Knorkator vor 24 MinutenMicrosoft

Hallo zusammen, vor einigen Tagen lief in der ARD u.a. Reportage. Das Youtube Video dazu dürfte länger verfügbar sein. ...

Windows 10

Neue Sicherheitslücke in Windows 10 (Version 1709) durch Google öffentlich geworden

Information von kgborn vor 18 StundenWindows 10

Vor ein paar Tagen haben Googles Sicherheitsforscher vom Projekt Zero eine Sicherheitslücke im Edge-Browser publiziert. Jetzt wurde eine weitere ...

iOS
IOS 11.2.6 verfügbar
Information von sabines vor 1 TagiOS

Mit dem Update soll der Bug behoben werden, bei dem eine bestimmte Zeichenkette IOS zum Absturz gebracht hat.

Sicherheit
Sicherheitsrisiko: Die Krux mit 7-Zip
Information von kgborn vor 1 TagSicherheit8 Kommentare

Bei vielen Anwendern ist das Tool 7-Zip zum Entpacken von Archivdateien im Einsatz. Die Software ist kostenlos und steht ...

Heiß diskutierte Inhalte
Router & Routing
LANCOM VPN CLIENT einrichten
Frage von Finchen961988Router & Routing27 Kommentare

Hallo, ich habe ein Problem und hoffe ihr könnt mir helfen, wir haben einen Kunden der hat einen Speedport ...

Windows Server
AD DS findet Domäne nicht, behebbar?
Frage von schapitzWindows Server25 Kommentare

Guten Tag, ich habe bei einem Kunden ein Problem mit den AD DS. Umgebung ist folgende: Windows Server 2016 ...

LAN, WAN, Wireless
VPN Cisco ASA5505 PaloAlto PA-200
gelöst Frage von YannoschLAN, WAN, Wireless22 Kommentare

Hallo zusammen, ich würde gerne ein Site-to-Site VPN zwischen den beiden Standorten aufbauen. PaloAlto PA200 Internetanschluss Deutsche Telekom GK ...

SAN, NAS, DAS
Qnap TS-453S Pro - Anbindung Active Directory
Frage von JuckieSAN, NAS, DAS13 Kommentare

Hallo zusammen, ich habe hier eine Qnap TS-453S Pro die sich mal so absolut gar nicht in das Active ...