leben-im-quadrat
Goto Top

Umsatzanzeige mittels Batch per Laufschrift

Hallo zusammen,

mein Chef hat mir aufgetragen für unserem Betrieb eine Laufschrift zu erstellen, welche den aktuellen Umsatz unseres Geschäfts und den Umsatz der einzelnen Warengruppen anzeigt.

Die Laufschrift habe ich soweit erstellt (einfacher Bildschirmschoner), so dass ich die Daten nur noch in eine TXT-Datei packen muss, welche ausgelesen wird.

Mein Problem sind die "Rohdaten" der Umsätze. Diese werden jede volle Minute in eine Datei mit dem Namen ums.wws1234 geschrieben und beinhaltet folgenden Text:

20090218;20050101;6000000;2225.52
20090218;20050101;6020000;1234.74
20090218;20050101;6100000;9876.05
20090218;20050101;6150000;6666.66
20090218;20050101;6200000;6872.03
usw.

Es gibt also pro Warengruppe eine Zeile nach dem Schema Datum;Uhrzeit;Warengruppe;Umsatz

Letztlich benötige ich aber eine Textdatei mit dem Namen laufschrift.txt, die ca. alle 5 Minuten mit den neuen Daten gefüttert wird und den Inhalt der ums.wws1234 folgendermaßen darstellt: Umsatz am 18.02.2009 um 20:05: WG600: 2225.25, WG602=1234.74, usw. Die Warengruppe ist immer 3stellig, daher werden die letzten 4 Nullen nicht benötigt. Am Ende soll noch der Gesamtumsatz aller Warengruppen angezeigt werden.

Ich weiss nicht, ob es sinnvoll ist das mit Batch zu programmieren oder doch besser mit VBS? Leider kenne ich mich mit beidem zu wenig aus. Mit Batch habe ich schon viel ausprobiert, aber ich bekomm es einfach nicht gebacken.

Habt ihr eine Idee?

Liebe Grüße,

Björn

Content-Key: 111897

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

Printed on: April 26, 2024 at 07:04 o'clock

Member: miniversum
miniversum Mar 19, 2009 at 18:41:36 (UTC)
Goto Top
Mal ungetestet kannst du es damit versuchen:
@echo off
set "infile=c:\rohdaten.txt"  
set "outfile=c:\laufschrift.txt"  

set gesamtumsatz=0
set "datum="  
set "uhrzeit="  
set "listentext="  
FOR /F "tokens=1,2,3,4 delims=;" %%i in ("%infile%") do call:verarbeite %%i %%j %%k %%l  
set "datum=%datum:~7,2%.%datum:~5,2%.%datum:~0,4%"  
set "uhrzeit=%uhrzeit:~0,2%:%uhrzeit:~3,2%"  
set "gesamtumsatz=%gesamtumsatz:~0,-3%.%gesamtumsatz:~-2%"  
echo Umsatz am %datum% um %uhrzeit%: %listentext%Gesamtumsatz=%gesamtumsatz%>"%outfile%"  
goto:eof

:verarbeite
set datum=%%i
set uhrzeit=%%j
set "wg=%%k"  
set "wg=%wg:0,3%"  
set "umsatz=%%l"  
set "listentext=%listentext%WG%wg%=%umsatz%, "  
set "umsatz=%umsatz:.=%"  
set /a gesamtumsatz+=umsatz
goto:eof
Member: leben-im-quadrat
leben-im-quadrat Mar 19, 2009 at 19:28:27 (UTC)
Goto Top
Hallo und schon mal danke für die Antwort.

Da wirft er mir folgendes in der laufschrift.txt aus:

Umsatz am ..%i um %j:: WGwg:0,3=%l, Gesamtumsatz=.0

*grübel* Ich versuch mich aber mal anhand deiner Vorlage...
Member: Biber
Biber Mar 19, 2009 at 19:36:59 (UTC)
Goto Top
Moin leben-im-quadrat,

willkommen im Forum.

Die Laufvariablen %%i, %%j, %%k und %%l, die "oben" als :call-Parameter RAUS gehen, die kommen "unten" in dem :call-Block ":verarbeite" an als %1, %2, %3 %4.

Ändere das, und Du bist dem Ziel näher.

Grüße
Biber
Member: miniversum
miniversum Mar 19, 2009 at 19:53:03 (UTC)
Goto Top
Hier die Korrigierte und getestete Version:
@echo off
set "infile=rohdaten.txt"  
set "outfile=laufschrift.txt"  

set gesamtumsatz=0
set "datum="  
set "uhrzeit="  
set "listentext="  
FOR /F "tokens=1,2,3,4 delims=;" %%i in ('type "%infile%"') do call:verarbeite %%i %%j %%k %%l  
set "datum=%datum:~7,2%.%datum:~5,2%.%datum:~0,4%"  
set "uhrzeit=%uhrzeit:~0,2%:%uhrzeit:~3,2%"  
set "gesamtumsatz=%gesamtumsatz:~0,-3%.%gesamtumsatz:~-2%"  
echo Umsatz am %datum% um %uhrzeit%: %listentext%Gesamtumsatz=%gesamtumsatz%>"%outfile%"  
goto:eof

:verarbeite
set "datum=%1"  
set "uhrzeit=%2"  
set "wg=%3"  
set "wg=%wg:~0,3%"  
set "umsatz=%4"  
set "listentext=%listentext%WG%wg%=%umsatz%, "  
set umsatz=%umsatz:.=%
set /a gesamtumsatz+=%umsatz%
goto:eof
Der gesamtumsatz stimmt aber nicht.d as liegt daran das der rechenwert die 65535 übersteigt.
Hier wäre eine temponäre vbs datei besser.

edit: @Biber: Hab ich ach grade bemerkt. war ein flüchtigkeitsfehler vonmri wiel ich es erst oben in klammern hatte.
Aber einanderer fahler hate sich auch noch versteckt. ;)
Member: leben-im-quadrat
leben-im-quadrat Mar 19, 2009 at 20:14:04 (UTC)
Goto Top
Perfekt, klappt wunderbar. Lediglich die Zeile in der das Datum definiert wird habe ich auf

set "datum=%datum:~6,2%.%datum:~4,2%.%datum:~0,4%"  

abgeändert, da es bei mir falsch dargestellt wurde.

VIELEN DANK!!!

Jetzt muss ich nur mal nachfragen, ob ich den Gesamtumsatz wirklich brauche, da der ja leider nicht stimmt. Oder habt ihr da auch spontan eine Lösung parat? ;)
Member: miniversum
miniversum Mar 19, 2009 at 20:34:22 (UTC)
Goto Top
Mit vbs würde es gehen.
Ersetze mal Zeile 24 durch diese:
echo WScript.Echo CLng(WScript.Arguments(0))+CLng(WScript.Arguments(1))>"%temp%\v.vbs"  
FOR /F "delims=" %%i in ('cscript //nologo "%temp%\v.vbs" %gesamtumsatz% %umsatz%') do set "gesamtumsatz=%%i"  
del "%temp%\v.vbs"  
je nach dme kansn tud dann sogar die Zeilen 12 und 23 weglassen.

edit: wscript in cscript geändert
Member: leben-im-quadrat
leben-im-quadrat Mar 19, 2009 at 21:08:42 (UTC)
Goto Top
Klappt leider nicht. Er schaffts nicht über die 65535 hinaus... hatte es gerade mal mit den aktuellen Daten probiert und es fehlen 200000 EUR ;) Alles andere wird wunderbar dargestellt.
Member: leben-im-quadrat
leben-im-quadrat Mar 19, 2009 at 21:14:17 (UTC)
Goto Top
Moment, ich hab grade die Zeile 12 rausgenommen und er zeigt mir jetzt den korrekten Wert

Gesamtumsatz=19404903

an. Jedoch fehlt das Komma vor den letzten zwei Ziffern. Also Gesamtumsatz=194049,03.
Member: miniversum
miniversum Mar 20, 2009 at 16:48:31 (UTC)
Goto Top
Genau dieser Punkt wird eigentlich in Zeile 12 eingefügt.
Die lösung mit der temponären vbs datei funktioniert nicht?
Member: leben-im-quadrat
leben-im-quadrat Mar 20, 2009 at 18:09:17 (UTC)
Goto Top
Wenn ich Zeile 12 drinhabe funktioniert das Script derzeit garnicht. Ohne Zeile 12 läufts perfekt. Ich habe auch schon etwas rumexperimentiert, aber auch noch keine Lösung gefunden.

Gegebenenfalls kann man beim Gesamtumsatz einfach die Nachkommastelle weglassen, da die "Centbeträge" hier eh keinen interessieren. Das wäre vielleicht noch ein Ansatz...
Member: miniversum
miniversum Mar 21, 2009 at 08:42:26 (UTC)
Goto Top
So es ist samstag und ich hab das Ganze nochmal bei mir angetestet.
So gehts bie mir, auch mit einem Gesamtumsatz über 65535
@echo off
set "infile=rohdaten.txt"  
set "outfile=laufschrift.txt"  

set gesamtumsatz=0
set "datum="  
set "uhrzeit="  
set "listentext="  
FOR /F "tokens=1,2,3,4 delims=;" %%i in ('type "%infile%"') do call:verarbeite %%i %%j %%k %%l  
set "datum=%datum:~6,2%.%datum:~4,2%.%datum:~0,4%"  
set "uhrzeit=%uhrzeit:~0,2%:%uhrzeit:~3,2%"  
set "gesamtumsatz=%gesamtumsatz:~0,-2%.%gesamtumsatz:~-2%"  
echo Umsatz am %datum% um %uhrzeit%: %listentext%Gesamtumsatz=%gesamtumsatz%>"%outfile%"  
goto:eof

:verarbeite
set "datum=%1"  
set "uhrzeit=%2"  
set "wg=%3"  
set "wg=%wg:~0,3%"  
set "umsatz=%4"  
set "listentext=%listentext%WG%wg%=%umsatz%, "  
set umsatz=%umsatz:.=%
set /a gesamtumsatz+=%umsatz%
goto:eof
Kannst ja nochmal antesten...