Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Gesamtsumme ermitteln

Frage Entwicklung Batch & Shell

Mitglied: ManneKL

ManneKL (Level 1) - Jetzt verbinden

11.05.2007, aktualisiert 15.05.2007, 4416 Aufrufe, 15 Kommentare

Gesamtsumme ermitteln

Hallo , Ihr Lieben,
brauche wieder mal Eure Hilfe.
Soll aus einer Text-Datei "2007-05-11-20.txt" die Anzahl der darin enthaltenen Gesamtkästen ermitten.Diese Zeiele Gesamtkästen sind mehrfach in dieser Datei enthalten.Anschließen in einer neuen Datei mit dem Datum schreiben.
Hier ein Beispiel:
Erstellt 11.05.2007 00:54:40
Nummer 20
Start 16.01.2007 14:44:07
Ende 11.05.2007 00:54:40
Gesamtkästen 89
Leergefache 10
Flaschen 122
Fremdflaschen 0

2....... - Kästen=1......., Flaschen=0......., Fremdfl=0......., Leer=0....... - (Sternburg 0,5)
29...... - Kästen=1......., Flaschen=0......., Fremdfl=0.......,
.
.
.
Gesamtkästen 89
.
.
.
Mein Skript, was noch nicht funktioniert:

@echo off

REM:Gesamtkästen summieren und auslesen für die Datei und dann neue Datei erstellen:

ECHO OFF

for /f %i in ('dir /b 2007-05-11-20.txt) do findstr /b /v "Gesamtkästen 89" %i >>%~ni.2007-05-11-20_neu.txt

Bitte um Eure Hilfe,
vielen Dank
Manne
Mitglied: bastla
11.05.2007 um 14:20 Uhr
Hallo ManneKL!

Willst Du Anzahl der Zeilen mit dem Bestandteil "Gesamtkästen" finden oder tatsächlich die hinter "Gesamtkästen" stehenden Zahlen aufsummieren?

Steht der Text "Gesamtkästen" immer am Anfang einer Zeile (wie Dein Batch-Ansatz vermuten ließe) oder kann davor noch weiterer Text (zB ein "." wie in Deinem Beispiel) stehen?

Grüße
bastla
Bitte warten ..
Mitglied: Iwan
11.05.2007 um 14:34 Uhr
ich würde es mit einem Import nach Excel probieren
das geht sicherlich einfacher
Bitte warten ..
Mitglied: ManneKL
11.05.2007 um 18:55 Uhr
Hallo bastla,
ja , es soll immer hinter Gesamtkästen die Zahl summiert werden und diese Gesamtkästen Zahl steht immer am Anfang der Zeile ohne ein anderes Zeichen (kein Text).
Gesamtkästen Zahl ist in der ganzen Datei mehrfach enthalten , an unterschiedlichen Zeilenanfängen.

gruß
Manne
Bitte warten ..
Mitglied: Biber
11.05.2007 um 19:27 Uhr
Moin ManneKL,

in diesem Fall entweder mit einem Oneliner am CMD-Prompt oder als Batch:
01.
@echo off & setlocal 
02.
for /f "tokens=2" %i in ('findstr /b "Gesamtkästen" 2007-05-11-20.txt') do @Set /a Summe+=%%i 
03.
Echo Gesamtsumme %Summe% >>Gesamt2007-05-11-20.txt
[...als ungetesteter Anfang für EINE Datei.]

Gruss
Biber
[Edit] @bastla: zu: Solltest Du nicht schon im Wochenende sein ...?
...ich hab noch einen Batchjob laufen, der sollte eigentlich am Ende ein "echo Feierabend" ausführen...
[/Edit]
Bitte warten ..
Mitglied: bastla
11.05.2007 um 19:29 Uhr
Hallo ManneKL!

Noch eine Frage zur neuen Datei: Soll diese alle Zeilen mit "Gesamtkästen" und die Summe enthalten, oder sollen alle anderen Zeilen (also ohne "Gesamtkästen") und abschließend die Summe hinein? [Edit] ... oder soll die Summe an die bestehende Datei angefügt werden - dann einfach Biber's Lösung verwenden ... [/Edit]

Im ersten Fall sähe der Code etwa so aus:
01.
@echo off & setlocal 
02.
set "Quelle=D:\Ordner mit Daten\2007-05-11-20.txt" 
03.
set "Ziel=D:\Ordner mit Daten\2007-05-11-20_neu.txt" 
04.
set /a Summe=0 
05.
if exist "%Ziel%" del "%Ziel%" 
06.
for /f "delims=" %%i in ('findstr /b /c:"Gesamtkästen" "%Quelle%"') do echo %%i>>"%Ziel%" & for /f "tokens=2" %%a in ('echo %%i') do set /a Summe+=%%a 
07.
echo Summe: %Summe%>>"%Ziel%"
Für den Fall 2 könnte man ähnlich vorgehen:
01.
@echo off & setlocal 
02.
set "Quelle=D:\Ordner mit Daten\2007-05-11-20.txt" 
03.
set "Ziel=D:\Ordner mit Daten\2007-05-11-20_neu.txt" 
04.
set /a Summe=0 
05.
if exist "%Ziel%" del "%Ziel%" 
06.
findstr /v /c:"Gesamtkästen" "%Quelle%">>"%Ziel%" 
07.
for /f "delims=" %%i in ('findstr /b /c:"Gesamtkästen" "%Quelle%"') do for /f "tokens=2" %%a in ('echo %%i') do set /a Summe+=%%a 
08.
echo Gesamtkästen %Summe%>>"%Ziel%"
Achten müsstest Du noch auch die Schreibweise des Umlautes - im Fall des Falles die Batchdatei zB als "Aufsummieren.bat" speichern und nochmals mit
01.
edit Aufsummieren.bat
öffnen, um das "ä" zu korrigieren. Beenden kannst Du den Editor mit Alt-d und b.

Grüße
bastla

[Edit] @Biber: Solltest Du nicht schon im Wochenende sein ... [/Edit]
[Edit2] Die Schreibweise der 2. Version ist als Abwandlung der 1. Variante entstanden - deshalb die umständliche Vorgangsweise mit zweimal "for" ... wie's schöner geht: siehe Version Biber[/Edit2]
Bitte warten ..
Mitglied: bastla
11.05.2007 um 19:39 Uhr
@Biber
...ich hab noch einen Batchjob laufen, der sollte eigentlich am Ende ein "echo Feierabend" ausführen...
Bist Du sicher, dass dahinter kein >nul steht?

Grüße
bastla
Bitte warten ..
Mitglied: Biber
11.05.2007 um 19:59 Uhr
<grins> @bastla
Bist Du sicher, dass dahinter kein >nul steht?
Doch, hinter beiden sogar, um ehrlich zu sein... das war mein Quick & Dirty-Test am CMD-Prompt:
01.
(=19:22:11  E:\Schnipsel=) 
02.
>Set "Summe=" & (for /f "tokens=2" %i in ('findstr /b "Gesamtkästen" ManneKL.txt') do @Set /a "Summe+=%i">nul) && Set Summe 
03.
Summe=3643
...also in der Tat mit ">nul" dahinter....

Nu' aber ab ins Wochenende...

Liebe & letzte Grüße
Biber
Bitte warten ..
Mitglied: ManneKL
12.05.2007 um 08:04 Uhr
Hallo bastla und biber,

ja bastla, in der neuen Datei sollen alle Zeilen aus der Quelldatei(2007-05-11-20.txt) mit "Gesamtkästen XXX" in einer neuen Datei enthalten sein und wenn geht,dann diese Einzelzahlen der Gesamtkästen, als abschließende Gesamtsumme.
Was ich noch nicht kapiert habe,ist der Umlaut"ä"im Wort "Gesamtkästen".Kann das diese Programmsprache nicht interpretieren?und muß mann da eine Änderung in der Quelltatei mit Editor durch Ersetzen von "ä" in "ae" durchführen?

Ansonsten werd ich es erst Anfang der Woche Eure Skripte testen können.
Bis dahin, vielen Dank...
Manne
Bitte warten ..
Mitglied: bastla
12.05.2007 um 08:30 Uhr
Hallo ManneKL!

... in der neuen Datei sollen alle Zeilen aus der Quelldatei(2007-05-11-20.txt) mit "Gesamtkästen XXX" ...
Dann versuch es mit meiner ersten Variante ...

Zur Umlautproblematik: Je nach Herkunft der Daten können Textdateien ua nach ASCII oder ANSI codiert sein. Wenn
01.
type 2007-05-11-20.txt
ein richtig dargestelltes "ä" ausgibt, sind es ASCII-Daten und Du solltest die oben beschriebene "edit"-Methode verwenden. Als Alternative käme auch noch ein als zweite Zeile in den Batch eingefügtes
01.
chcp 1252
in Frage.

Ist andererseits das "ä" im Windows-Editor richtig zu lesen, kannst Du den geposteten Code ebenfalls einfach über den Windows-Editor abspeichern.

Grüße
bastla
Bitte warten ..
Mitglied: Biber
12.05.2007 um 12:02 Uhr
Hallo ManneKL,

lass Dich nicht verwirren von den ANSI/ASCII-Bierkästen - ist in Deinem Fall keine Komplikation.
Umlaute und andere Specials werden halt in diesen beiden Codepags unterschiedlich kodiert.
Nichtsdestotrotz bleibt ein "ä" oder "ü" oder "ß" jeweils ein Zeichen (wie auch immer dargestellt).

Also kannst Du mit dem gar nicht gebührend gelobten FindStr.exe, das seit ein paar Windowsversionen als Schmankerl dabei ist, auch eine Wildcard-Suche machen.

Beispiel zum Nachkaspern am CMD-Prompt (Einzutippende Zeilen beginnen mit ">"):
Suche nach den Strings "Schnellübersicht" in einem Text:
01.
>findstr /?>findstr.txt 
02.
REM Die FindStr-Hilfe in einen Txt schreiben 
03.
 
04.
REM Suche alle die Zeichenfolge "Ausdr"+ ein beliebiges Zeichen + "ck" 
05.
>findstr /r "Ausdr.ck" findstr.txt 
06.
  /R    Sucht nach der Zeichenfolge als regulärem Ausdruck. 
07.
Schnellübersicht regulärer Ausdrücke: 
08.
Informationen zu FINDSTR mit regulären Ausdrücken finden Sie im 
09.
 
10.
REM Suche die Zeichenfolge "Ausdr"+ ein beliebiges Zeichen + "ck"+ ein beliebiges Zeichen +":" am Zeilenende 
11.
>findstr /r "Ausdr.ck.:$" findstr.txt 
12.
Schnellübersicht regulärer Ausdrücke: 
13.
 
14.
REM Suche die Zeichenfolge "Ausdr"+ ein beliebiges Zeichen + "ck"+ "." am Zeilenende 
15.
>findstr /r "Ausdr.ck\.$" findstr.txt 
16.
  /R    Sucht nach der Zeichenfolge als regulärem Ausdruck. 
17.
 
18.
REM Suche alle Strings "Schnell" + beliebiges Zeichen +"bersicht", die am Zeilenanfang stehen   
19.
>findstr /r "^Schnell.bersicht" findstr.txt 
20.
Schnellübersicht regulärer Ausdrücke:

In Deinem Fall also wäre der letzte Fall der merkenswerte:
findstr /r "^Bierk.sten" InDeinem.txt
---> der liefert Dir alle "Bierk?sten"-Zeilen.

Gruß
Biber
Bitte warten ..
Mitglied: ManneKL
13.05.2007 um 17:10 Uhr
Hallo bastla+biber,
danke für die Ausführungen mit den Umlauten.
Habe aber noch eine Frage zu Euren Skripten(ungetestet).
Wie ermittelt man die Zeile "Gesamtkästen XXX" mit der jeweiligen Zeitangabe (Erstellt 11.05.2007 00:54:40)aus der Quelldatei(2007-05-11-20.txt).Die nächste Zeile-Zeitangabe "Erstellt 11.05.2007 02:30:04" folgt mit der "Gesamtkästen XXX" mehrmals in der Quelltatei ,wobei sich immer die Zeitangabe und die Anzahl der "Gesamtkästen" ändern.Im Ergebnis soll die neue Datei dann nur das Datum mit Zeit und der jeweiligen Zahl der "Gesamtkästen" enthalten wobei diese Angaben sich immer durch die unterschiedlichen Zeitangaben und "Gesamtkästen"unterscheiden und aufgeführt werden.Die Gesamtsumme würde ich dann in einer Datenbankabfrage (vorher Import der Daten) ermitteln.
....vielleicht darf ich Euch dafür noch mal bemühen?
gruß
Manne
Bitte warten ..
Mitglied: ManneKL
14.05.2007 um 08:55 Uhr
allo bastla+biber,

zur genaueren Erklärung meiner letzten Mail.In der neuen Datei (Fall 1 bastla) soll noch die jeweilige Zeitangabe daneben stehen, so ungefähr:
Gesamtkästen 89 Erstellt 11.05.2007 00:54:40
Gesamtkästen 145 Erstellt 11.05.2007 02:45:11
Gesamtkästen 156 Erstellt 11.05.2007 03:26:46

Mit den jeweiligen Zeitangaben kann ich dann bessere Auswertungen tätigen.
Ansonsten funktionieren die beiden Skripte hervorragend,tausend Dank nochmal.
Gruß
Manne
Bitte warten ..
Mitglied: ManneKL
14.05.2007 um 16:58 Uhr
Hallo bastla,
könntest Du das Skript noch so umstricken, dass mann neben der "Gesamtkästen zahl noch jeweils das Datum mit der Uhrzeit steht "Ende 11.05.2007 00:45:40"?

@echo off & setlocal
set "Quelle=C:\LG\2007-05-13-20.txt"
set "Ziel=C:\LG\2007-05-13-20_neu.txt"
set /a Summe=0
if exist "%Ziel%" del "%Ziel%"
for /f "delims=" %%i in ('findstr /b /c:"Gesamtkästen" "%Quelle%"') do echo %%i>>"%Ziel%" & for /f "tokens=2" %%a in ('echo %%i') do set /a Summe+=%%a

Quelle:
Erstellt 11.05.2007 00:54:40
Nummer 20
Start 16.01.2007 14:44:07
Ende 11.05.2007 00:54:40
Gesamtkästen 89
>>>>>>>>Werte, bis zum nächsten Block.....

Danke
Manne
Bitte warten ..
Mitglied: bastla
14.05.2007 um 18:31 Uhr
Hallo ManneKL!

Sollte so gehen:
01.
@echo off & setlocal 
02.
set "Quelle=C:\LG\2007-05-13-20.txt" 
03.
set "Ziel=C:\LG\2007-05-13-20_neu.txt" 
04.
if exist "%Ziel%" del "%Ziel%" 
05.
for /f "delims=" %%i in ('type "%Quelle%"') do call :ProcessLine "%%i" 
06.
goto :eof 
07.
:ProcessLine 
08.
echo %~1|findstr /b /c:"Erstellt">nul && set "Erst=%~1" 
09.
echo %~1|findstr /r "^Gesamtk.sten">nul && echo %~1 %Erst%>>"%Ziel%"
In dieser Fassung ist Biber's "ASCII/ANSI-Codierung is mir schnuppe"-Variante integriert ...

Grüße
bastla
Bitte warten ..
Mitglied: ManneKL
15.05.2007 um 12:21 Uhr
Hallo bastla,
Dein letztes Skript funktioniert , echt toll...
Vielen,vielen Dank für Eure uneigennützige Hilfe.

Groß
ManneKl
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
DNS
Hostnames für mehrere IPs ermitteln (3)

Frage von Oneil-1989 zum Thema DNS ...

Mac OS X
gelöst 500 Wordfiles die jeweilige Anzahl an Wörtern ermitteln (26)

Frage von xp-user zum Thema Mac OS X ...

Router & Routing
gelöst Netzwerkbelastung ermitteln (6)

Frage von Azubine zum Thema Router & Routing ...

Windows Installation
gelöst Win10 Build einer Installations-ISO ermitteln (9)

Frage von chiefteddy zum Thema Windows Installation ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (19)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...