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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 111897
Url: https://administrator.de/forum/umsatzanzeige-mittels-batch-per-laufschrift-111897.html
Ausgedruckt am: 15.05.2025 um 05:05 Uhr
11 Kommentare
Neuester Kommentar
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
Hier die Korrigierte und getestete Version:
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. ;)
@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
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. ;)
Mit vbs würde es gehen.
Ersetze mal Zeile 24 durch diese:
je nach dme kansn tud dann sogar die Zeilen 12 und 23 weglassen.
edit: wscript in cscript geändert
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"
edit: wscript in cscript geändert
So es ist samstag und ich hab das Ganze nochmal bei mir angetestet.
So gehts bie mir, auch mit einem Gesamtumsatz über 65535
Kannst ja nochmal antesten...
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