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

Telefonliste mit Batch überwachen

Frage Entwicklung Batch & Shell

Mitglied: barkingdog

barkingdog (Level 1) - Jetzt verbinden

10.12.2008, aktualisiert 12.12.2008, 3904 Aufrufe, 11 Kommentare

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.
Mitglied: bastla
10.12.2008 um 15:01 Uhr
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
findstr /c:",100 " C:\CTILOG.TXT > D:\ANRUFE.TXT
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:
01.
@echo off & setlocal 
02.
:Loop 
03.
findstr /c:",100 " C:\CTILOG.TXT > D:\ANRUFE.TXT 
04.
sleep 600 
05.
goto :Loop
Grüße
bastla
Bitte warten ..
Mitglied: barkingdog
10.12.2008 um 16:09 Uhr
Eigentlich soll in der anrufe.txt die Zeile aus der CTILOG.txt ohne die beiden letzten Ziffern, die sind bei findstr nicht relevant. Jetzt weiß ich allerdings nicht ob das möglich ist.

Zum Ressource Kit Tool dass brauche nur installieren oder muss ich da noch was einstellen.

So sieht meine momentane Fassung aus:

@echo off & setlocal
:Loop
for /F "tokens=1-5 delims=," %%a in ('find "111" D:\CTILOG.TXT^') do @set vari=%%a
echo %Vari%>C:\neu.txt
sleep 600
goto :Loop


Das von dir gepostete hat bei mir nur eine leere Anrufe.txt erstellt. Wenn ich nur die ersten 5 Tokens haben will funktioniert das bei mir auch nicht, habe auch schon andere Schreibweisen benutzt leider mit dem gleichen Ergebnis.

for /F "tokens=1,2,3,4,5 delims=," %%a in ('find "111" D:\CTILOG.TXT^') do @set vari=%%a


Danke schon mal für deine Hilfe.
Bitte warten ..
Mitglied: bastla
10.12.2008 um 16:45 Uhr
Hallo barkingdog!

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:
01.
@echo off & setlocal 
02.
set "Anrufe=D:\ANRUFE.TXT" 
03.
set "CTILOG=D:\CTILOG.TXT" 
04.
 
05.
:Loop 
06.
if exist "%Anrufe%" del "%Anrufe%" 
07.
for /f "tokens=1-5 delims=," %%a in ('findstr /c:",100 " "%CTILOG%"') do >>"%Anrufe%" echo %%a,%%b,%%c,%%d,%%e 
08.
sleep 600 
09.
goto :Loop
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 "Code"-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
Bitte warten ..
Mitglied: barkingdog
10.12.2008 um 16:55 Uhr
Ja mit Ziffern hatte ich Zahlen gemeint, da hatte ich mich unklar ausgedrückt.

Habe heute irgendwie keinen Kopf für solche Sachen, da hast du schon recht dass meine Batch einen Nachteil hat. Hm die Batch jede Sekunde durchlaufen zu lassen wäre wohl übertrieben, von daher lieber umschreiben.

Danke für die Anleitung mit der "Code"-Formatierung. Ich hatte es anfangs mit [code][/code] probiert.

Weiss nicht ob ich heute noch die Zeit finde es auszuprobieren wenn nich werde ich mich morgen nochmal damit auseinander setzen. Danke für deine Hilfe.
Bitte warten ..
Mitglied: bastla
10.12.2008 um 17:05 Uhr
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
Bitte warten ..
Mitglied: barkingdog
11.12.2008 um 10:52 Uhr
Zitat von bastla:
Hallo barkingdog!
[...]
01.
@echo off & setlocal 
02.
> set "Anrufe=D:\ANRUFE.TXT" 
03.
> set "CTILOG=D:\CTILOG.TXT" 
04.
>  
05.
> :Loop 
06.
> if exist "%Anrufe%" del "%Anrufe%" 
07.
> for /f "tokens=1-5 delims=," %%a in ('findstr 
08.
> /c:",100 " "%CTILOG%"') do 
09.
> >>"%Anrufe%" echo %%a,%%b,%%c,%%d,%%e 
10.
> sleep 600 
11.
> goto :Loop 
12.
> 
>[...]
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 bastla,

also mit dem was du da geschrieben hast bekomme ich leider kein Ergebnis und den Fehler finde ich auch nicht. Ich kenne mich nun wirklich nicht aus, aber eigentlich sieht es für richtig aus und daher weiss ich jetzt auch nicht wo ich da ansetzen muss.
Bitte warten ..
Mitglied: bastla
11.12.2008 um 14:27 Uhr
Hallo barkingdog!

Wies sieht denn nun tatsächlich eine Zeile der "CTILOG.TXT" aus? Derzeit wird nach
,100 
(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
Bitte warten ..
Mitglied: barkingdog
11.12.2008 um 15:12 Uhr
Hallo bastla!

Ja es wird nach ,[Leerzeichen]100 gesucht. So der Fehler ist behoben jetzt werde ich es mal testen. Entschuldige bitte, wenn ich deine Nerven vielleicht etwas überstrapaziert haben sollte ;)

Edit

Kann ich mit "findstr" auch nach mehreren Sachen auf einmal suchen ?

01.
for /f "tokens=1-10 delims=," %%a in ('findstr /c:", 100.*,ein" "%CTILOG%"')
So dass ich nach der Rufnummer 100 suchen kann und ob in der Zeile auch ein steht. Ich habe die Metazeichen "." und "*" probiert aber es gibt kein Ergebnis. Ich hatte gedacht dass .* eine beliebige Folge von Zeichen darstellt oder liege ich damit falsch ?

Edit

^^Wenn Sie nach mehreren verschiedenen Suchausdrücken in einer Dateimenge suchen möchten, erstellen Sie eine Textdatei, in der jedes >Suchkriterium auf einer neuen Zeile aufgeführt ist. Sie können auch eine zweite Datei erstellen, die eine Liste der zu durchsuchenden >Dateien enthält. Um die Suchkriterien in der Datei Suchdat.txt zum Durchsuchen der Dateien in Dateilst.txt zu verwenden und anschließend die >Resultate in die Datei Resultat.aus zu schreiben, geben Sie Folgendes ein:
>findstr /g:suchdat.txt /f:dateilst.txt > resultat.aus


Quelle: Microsoft

Dass habe ich dazu gefunden, doch habe ich das Problem dasss es momentan an der Umsetzung hapert. Wenn ich das richtig verstanden habe,
schreibe ich eine der .txt Dateien die Suchkritieren rein und die andere ist die zu durchsuchende. Mir stellt sich jetzt bloss die Frage wie
ich die Suchkritieren da rein schreiben muss.
Bitte warten ..
Mitglied: bastla
11.12.2008 um 16:27 Uhr
Hallo barkingdog!

Mach es doch einfach so:
for /f "tokens=1-10 delims=," %%a in ('findstr /c:", 100" "%CTILOG%"^|findstr /c:",ein"') do
Damit werden zunächst alle Zeilen, welche ", 100" enthalten, herausgefiltert. Dieses Zwischenergebnis wird dann nochmals (auf das Vorhandensein von ",ein") untersucht.

Grüße
bastla
Bitte warten ..
Mitglied: barkingdog
12.12.2008 um 10:15 Uhr
Hallo bastla!

Ich wollte dir nochmals danken für deine Hilfe, es läuft jetzt so wie ich mir das vorgestellt habe. Wirklich schön was man mit so einfachen Mitteln umsetzen kann.

Grüße
barkingdog
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
Batch zum bearbeiten mehrerer CSV (3)

Frage von Matzus87 zum Thema Batch & Shell ...

Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von Markus5579 zum Thema Batch & Shell ...

Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

Batch & Shell
CMD Verschlüsslung ( Batch ) (11)

Frage von clragon zum Thema Batch & Shell ...

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

Frage von Xaero1982 zum Thema Microsoft ...

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

Frage von Floh21 zum Thema Outlook & Mail ...

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

Frage von Unwichtig zum Thema Netzwerkmanagement ...