Also nun wie gewünscht die kleine Anleitung um Textdateien auf bestimmte Wörter zu durchzusuchen und zu ersetzen. Somit ist zum einen eine Art Filterfunktion möglich zum anderen könnten so aber auch div. Einsatzkürzel automatisch ausgeschrieben oder abgewandelt werden, z.B. aus THKL wird Kleine Technische Hilfeleistung. Aus ä wird ae usw. Dies ist ggf. für eine Sprachausgabe oder dergleichen sinnvoll.
Weiterhin ist es z.B. dann auch möglichoder andere Sonderzeichen wie NULL oder * usw. zu "filtern" man kann z.B. die * welche normalweise als Abstandsmarkierungen genutzt werden gegen ein Leerzeichen ersetzen lassen oder das komplett rausnehmen.
Dies ist nur eine Beispielhafte Lösung wie ich sie nun schon seit knapp einem Jahr sehr zufrieden nutze. Ggf. gibt es bessere, schnellere Lösungen mir reicht es so aber.
Was brauchen wir?
- Eine Alarmmierungsabarbeitung mittels Batch ( Bei Alarmaktion wird eine Batch gestartet ) in denen der ausgewertete Alarmtext in eine Textdatei übertragen wird und dann weiter genutzt wird ( Zum Alarmsms / E-Mail versenden etc. )
- Ein VB-Skript
- Textdateien ;-)
Alarmbatch --> Umwandlung des ausgewerteten Alarm in Textdatei:
Dies ist recht Simpel, Sowohl bei POC32 als auch bei FMS32(Pro) enthält der Übergabeparameter %3 die gewünschten, ausgewerteten Textinformationen der Alarmmeldung. Diese werden dann natürlich genau so übergeben, wie ausgewertet.
Um diese nun in eine Textdatei schreiben zu lassen schreibt ihr in eure Batch, welche ja von POC32 oder FMS32 aufgerufen wurde ( sonst klappt das natürlich nicht ) z.B. folgendes rein:
( Bei FMS32 an die Übergabe der Parameter im Aufruf denken !
C:\MeinPfad\Alarmierungen\WER\WER-Alarm.bat "%1" "%2" "%3" "%4" )
Das Ergebnis in der Textdatei sieht dann so aus:Code:@ECHO OFF ECHO ACHTUNG EINSATZ! ALARMMELDUNG: %3 ZEITPUNKT: %time% DATUM: %date% /\ENDE/\ >> C:\MeinPfad\Alarmtext\Alarmsms.txt
ACHTUNG EINSATZ! ALARMMELDUNG: "BMA*Musterhausen*Musterstraße 32*Moebelhaus MusterZEITPUNKT: 12:41:47 DATUM: 07.12.2009 /\ENDE/\
VB-Skipt Filter:
Für nachfolgenden Schritt ggf. bei Win XP in den Ordneroptionen die Ansichten der Dateiendungen anpassen.
Im Explorer:
Extras-> Ordneroptionen -> Reiter Ansicht -> "Erweiterungen bei bekannten Dateitypen ausblenden" auf nicht aktiv setzen !
Nun erstellt ihr euch eine neue Textdatei (rechtsklick-> neu -> Texdokument ) mit dem Namen Alarmfilter.vbs. Die Abfrage ob die Dateinamenveränderung durchgeführt werden soll mit Ja bestätigen.
In diese Datei wird folgendes VB-Skript eingefügt und abgespeichert:
Dies ist nur eine Beispiel Filterdatei mit derCode:'Angabe der Ersetzungspaare als "TextAlt=TextNeu" Ers = Array(_ "$",_ "*$ ") Trenn = "$" 'Trennungszeichen zwischen TextAlt und TextNeu If WScript.Arguments.Count > 0 Then Datei = WScript.Arguments(0) Else WScript.Quit End If Set fso = CreateObject("Scripting.FileSystemObject") For i = 0 To UBound(Ers) Ers(i) = Split(Ers(i), Trenn) Next Text = fso.OpenTextFile(Datei).ReadAll For i = 0 To UBound(Ers) Text = Replace(Text, Ers(i)(0), Ers(i)(1), 1, -1, vbTextCompare) Next fso.CreateTextFile(Datei, True).Write Text und * gefiltert werden können.
Erklärung:
Das Array "Ers" enthält alle Ersetzungsinformationen
Das $ Zeichen dient als Trennungszeichen zwischen dem "Original Wort" oder Kürzel etc. und dem zu ersetzenden Kürzel. Das Trennungszeichen kann bei bedarf auch geändert werden ( wenn z.B. $ gefiltert werden soll ) Dies muss dann im Abschnitt Trenn = erfolgen
Eine komplette Ersetzung ist in Anführungszeichen zu setzen und am ende mit ,_ zu kennzeichnen. Hinter die letzte Ersetzungangabe ist das Array nur mit einer ) zu schließen.
Beispiele:
"$" = wird komplett enfernt und gegen nichts ersetzt
"BMA$Brandmeldeanlage" = Aus BMA wird Brandmeldeanlage
"*$ " = Das * wird gegen ein Leerzeichen ersetzt
Filtereinbau in Batch:
Nachdem nun die Umwandlung in eine Textdatei sowie die eigentlicher Filterfunktion steht muss diese nur noch in der Batch aufgerufen und somit abgearbeitet werden.
Dies ist der Aufruf in unserer Alarm Batch um die Textdatei Alarmsms.txt mit dem "Filterskript" Alarmfilter.vbs abzuarbeiten. Dies geschieht sofort parallel. Somit ist zu beachten was und wie gefiltert / ersetzt wird da es in dem Textdokument direkt geändert und somit ggf. überschrieben oder entfernt wird !Code:@REM ALARMIERUNG WIRD gefiltert! cscript //nologo C:\MeinPfad\Alarmierungen\Alarmfilter\Alarmfilter.vbs "C:\MeinPfad\Alarmtext\Alarmsms.txt"
Nun könnte danach dann der eigentliche Aufruf der SMS Versendung oder was auch immer stattfinden.
Natürlich ist ganz am Ende dran zu denken die Textdatei auch wieder zu löschen da ansonsten alle Folge Alarmierungen einfach in die nächsten Zeilen geschrieben werden ! Dies könnte bei einer SMS Alarmierung dann schnell teuer werden ;-)
Vor dem löschen könnte mithilfe der Wait.exe oder einen Ping etc. eine Wartezeit generiert werden. Somit liese sich auch manuell nochmals eine Unterdrückung doppelter oder schnell hinternander folgender Ausführungen der Batch Datei einrichten.Code:DEL C:\MeinPfad\Alarmtext\Alarmsms.txt
http://www.petersen.de/content/conte....php?idart=163
Bei Fragen, Fehlern oder Unklarheiten bitte einfach hier posten.
MFG Beatzler