Telefonliste mit Batch überwachen
Hallo miteinander,
bei der Suche nach einer Möglichkeit mein Problem zu lösen bin ich auf dieses Forum aufmerksam geworden.
Mein Problem ist folgendes, es geht um die Auswertung einer .txt datei, in welcher eingehende Anrufe gespeichert werden.
Gegenwärtig ist es so, dass sobald sich in dieser .txt etwas ändert ich eine Email erhalte, allerdings sind nicht alle eingehenden Anrufe
für mich und deswegen will ich einen Filter drüber laufen lassen der eine seperate .txt erstellt in welcher nur Anrufe für mich gespeichert werden.
Hier mal ein Beispieleintrag:
01.12.2008,09:46:01,[b]100[/b], +49 (9999) 998877, ja,ein, 9, 100, 100
01.12.2008,09:46:12,122 , +49 (9999) 998877, ja,ein, 9, 122, 122
So meine Durchwahl ist die 100, die bat, soll jetzt immer die letzte Zeile auf die Durchwahl hin prüfen und die Zeile in eine extra .txt zu schreiben.
Fragen:
-ist es möglich eine geschriebene .bat Datei alle 10 min. .txt prüfen zu lassen
Ich kenne mich mit dem Schreiben einer Stapelverarbeitung nicht so gut aus, ich habe mir ein paar Sachen selber zusammengesucht, allerdings verstehe ich da nicht alles.
@echo off & setlocal enabledelayedexpansion
set "CTILOG=D:\CTILOG.TXT" Anruferliste wird von der Telefonanlage geschrieben
set "Anrufe=D:\ANRUFE.TXT" Datei in die Anrufe für mich geschrieben werden sollen
for /f "tokens=1,2,3,4 delims=" %%a in ('find "100" %CTILOG%') do @set vari=%%a // Schleife die den String nach meiner Durchwahl durchsucht und dann in Variable vari speichert (?)
Jetzt weiss ich nicht mehr wie es weitergeht, würde mich über jede Hilfe freuen danke.
bei der Suche nach einer Möglichkeit mein Problem zu lösen bin ich auf dieses Forum aufmerksam geworden.
Mein Problem ist folgendes, es geht um die Auswertung einer .txt datei, in welcher eingehende Anrufe gespeichert werden.
Gegenwärtig ist es so, dass sobald sich in dieser .txt etwas ändert ich eine Email erhalte, allerdings sind nicht alle eingehenden Anrufe
für mich und deswegen will ich einen Filter drüber laufen lassen der eine seperate .txt erstellt in welcher nur Anrufe für mich gespeichert werden.
Hier mal ein Beispieleintrag:
01.12.2008,09:46:01,[b]100[/b], +49 (9999) 998877, ja,ein, 9, 100, 100
01.12.2008,09:46:12,122 , +49 (9999) 998877, ja,ein, 9, 122, 122
So meine Durchwahl ist die 100, die bat, soll jetzt immer die letzte Zeile auf die Durchwahl hin prüfen und die Zeile in eine extra .txt zu schreiben.
Fragen:
-ist es möglich eine geschriebene .bat Datei alle 10 min. .txt prüfen zu lassen
Ich kenne mich mit dem Schreiben einer Stapelverarbeitung nicht so gut aus, ich habe mir ein paar Sachen selber zusammengesucht, allerdings verstehe ich da nicht alles.
@echo off & setlocal enabledelayedexpansion
set "CTILOG=D:\CTILOG.TXT" Anruferliste wird von der Telefonanlage geschrieben
set "Anrufe=D:\ANRUFE.TXT" Datei in die Anrufe für mich geschrieben werden sollen
for /f "tokens=1,2,3,4 delims=" %%a in ('find "100" %CTILOG%') do @set vari=%%a // Schleife die den String nach meiner Durchwahl durchsucht und dann in Variable vari speichert (?)
Jetzt weiss ich nicht mehr wie es weitergeht, würde mich über jede Hilfe freuen danke.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 103756
Url: https://administrator.de/contentid/103756
Ausgedruckt am: 12.11.2024 um 22:11 Uhr
11 Kommentare
Neuester Kommentar
Hallo barkingdog und willkommen im Forum!
Was genau soll denn in Deiner "ANRUFE.TXT" stehen?
Falls Du nur aus der "CTILOG.TXT" alle Deine Durchwahl betreffenden Anrufe filtern willst, sollte doch
genügen. Durch die Verwendung der Umleitung mit ">" wird bei jedem Batchdurchlauf die gefilterte Datei neu erstellt.
Wenn Du "sleep.exe" aus den Windows Server 2003 Resource Kit Tools zur Verfügung hast, könntest Du den Batch in einer Endlosschleife laufen lassen:
Grüße
bastla
Was genau soll denn in Deiner "ANRUFE.TXT" stehen?
Falls Du nur aus der "CTILOG.TXT" alle Deine Durchwahl betreffenden Anrufe filtern willst, sollte doch
findstr /c:",100 " C:\CTILOG.TXT > D:\ANRUFE.TXT
Wenn Du "sleep.exe" aus den Windows Server 2003 Resource Kit Tools zur Verfügung hast, könntest Du den Batch in einer Endlosschleife laufen lassen:
@echo off & setlocal
:Loop
findstr /c:",100 " C:\CTILOG.TXT > D:\ANRUFE.TXT
sleep 600
goto :Loop
bastla
Hallo barkingdog!
Alternativen wären
- die manuelle Ergänzung der "PATH"-Systemvariable über "Systemeigenschaften / Erweitert / Umgebungsvariablen / Systemvariablen" oder
- die Angabe des Pfades zur "sleep.exe" im Batch.
Die Schreibweise des Suchstrings mit ",100 " sollte dafür sorgen, dass nicht unbeabsichtigt auch Zeilen, in welchen die Nummer des Anrufers "100" enthält, erfasst werden.
Dass mein Ansatz oben kein Ergebnis brachte, könnte daran liegen, dass sich das Leerzeichen nicht nach "100", sondern zwischen "," und "100" befindet (auch, wenn es in Deinem "Beispieleintrag" anders aussieht). Damit das beim Posten von weiteren Beispieldaten (und auch von Batchen) nicht mehr passiert, solltest Du dafür ""-Formatierung (ich bevorzuge für Daten "plain") verwenden.
Dein Batch hat aus meiner Sicht einen Nachteil: Es wird nur jeweils der letzte Anruf erfasst - falls es innerhalb der 10 Minuten "sleep"-Zeit mehrere gewesen sein sollten, wäre das nicht zu erkennen.
Grüße
bastla
Zum Ressource Kit Tool dass brauche nur installieren oder muss ich da noch was einstellen.
Nach der Installation sollte der Programmordner (defaultmäßig: "C:\Programme\Windows Resource Kits\Tools") automatisch in die Variable %PATH% übernommen worden sein - dann stehen alle enthaltenen Programm im Batch zur Verfügung.Alternativen wären
- die manuelle Ergänzung der "PATH"-Systemvariable über "Systemeigenschaften / Erweitert / Umgebungsvariablen / Systemvariablen" oder
- die Angabe des Pfades zur "sleep.exe" im Batch.
Eigentlich soll in der anrufe.txt die Zeile aus der CTILOG.txt ohne die beiden letzten Ziffern
Mit "Ziffern" sind hier vermutlich "Zahlen" gemeint - dann so:@echo off & setlocal
set "Anrufe=D:\ANRUFE.TXT"
set "CTILOG=D:\CTILOG.TXT"
:Loop
if exist "%Anrufe%" del "%Anrufe%"
for /f "tokens=1-5 delims=," %%a in ('findstr /c:",100 " "%CTILOG%"') do >>"%Anrufe%" echo %%a,%%b,%%c,%%d,%%e
sleep 600
goto :Loop
Dass mein Ansatz oben kein Ergebnis brachte, könnte daran liegen, dass sich das Leerzeichen nicht nach "100", sondern zwischen "," und "100" befindet (auch, wenn es in Deinem "Beispieleintrag" anders aussieht). Damit das beim Posten von weiteren Beispieldaten (und auch von Batchen) nicht mehr passiert, solltest Du dafür ""-Formatierung (ich bevorzuge für Daten "plain") verwenden.
Dein Batch hat aus meiner Sicht einen Nachteil: Es wird nur jeweils der letzte Anruf erfasst - falls es innerhalb der 10 Minuten "sleep"-Zeit mehrere gewesen sein sollten, wäre das nicht zu erkennen.
Grüße
bastla
Hallo barkingdog!
Vielleicht noch als Denkansatz (für morgen ): Du könntest eine Aufteilung vornehmen in "Anrufe_alt.txt" und "Anrufe_neu.txt". Bei jedem Batchdurchlauf wären alle in "CTILOG.TXT" enthaltenen relevanten Zeilen darauf hin zu überprüfen, ob sie bereits in einer der beiden Dateien enthalten sind - wenn nicht, dann an "Anrufe_neu.txt" anfügen.
Die "neuen" Anrufe könntest Du mit einem weiteren Batch zu "alten" machen, indem Du sie an "Anrufe_alt.txt" anfügst und "Anrufe_neu.txt" löschst (bzw leerst). Dieser Batch wäre nach Bedarf manuell aufzurufen.
Grüße
bastla
Vielleicht noch als Denkansatz (für morgen ): Du könntest eine Aufteilung vornehmen in "Anrufe_alt.txt" und "Anrufe_neu.txt". Bei jedem Batchdurchlauf wären alle in "CTILOG.TXT" enthaltenen relevanten Zeilen darauf hin zu überprüfen, ob sie bereits in einer der beiden Dateien enthalten sind - wenn nicht, dann an "Anrufe_neu.txt" anfügen.
Die "neuen" Anrufe könntest Du mit einem weiteren Batch zu "alten" machen, indem Du sie an "Anrufe_alt.txt" anfügst und "Anrufe_neu.txt" löschst (bzw leerst). Dieser Batch wäre nach Bedarf manuell aufzurufen.
Grüße
bastla
Hallo barkingdog!
Wies sieht denn nun tatsächlich eine Zeile der "CTILOG.TXT" aus? Derzeit wird nach
(mit einem Leerzeichen nach "100") gesucht - falls, wie oben schon angesprochen, dieses Leerzeichen eigentlich zwischen dem Komma und der Zahl 100 stehen müsste, kann natürlich nichts gefunden werden ...
Grüße
bastla
Wies sieht denn nun tatsächlich eine Zeile der "CTILOG.TXT" aus? Derzeit wird nach
,100
Grüße
bastla
Hallo barkingdog!
Mach es doch einfach so:
Damit werden zunächst alle Zeilen, welche ", 100" enthalten, herausgefiltert. Dieses Zwischenergebnis wird dann nochmals (auf das Vorhandensein von ",ein") untersucht.
Grüße
bastla
Mach es doch einfach so:
for /f "tokens=1-10 delims=," %%a in ('findstr /c:", 100" "%CTILOG%"^|findstr /c:",ein"') do
Grüße
bastla