wtaler
Goto Top

Dateiinhalt von Subject.txt nach einem Filter prüfen und danach die Datei Subject.txt und Mailinhalt.txt löschen

Eigentlich programmiere ich unter Sinix und und bin mit Batchdateien unter Windows Vista noch nicht so erfahren. Ich freue mich auf eine Hilfestellung von Euch.

Guten Tag,

ich habe die Batchdatei

if exist mailinhalt.txt goto ende'
echo Am %date% um %time:~0,8% Fehlerausl. %3 >> c:\emailalarm\mailinhalt.txt
echo %3 >> c:\emailalarm\subject.txt
ping -n 15 localhost >nul
[Hier erfolgt der Versand der Email mit Parametern und blat.exe, der auch funktioniert]
del c:\emailalarm\mailinhalt.txt
del c:\emailalarm\subject.txt
del c:\emailalarm\versandlog.txt
wait 60
end

(Die Variable %3 ist ein Infotext der Maschine, der Ping -n soll doppelte Meldung bzw. Folgemeldungen nur in den Mailinhalt schreiben.) geschrieben, die die Daten einer Fehlerauslösung über das Programm blat.exe zuverlässig versendet.

Aufgrund vieler Infomeldungen, die mit RD: oder AD: beginnen und nur Informationen und keine Fehler übertragen, möchte ich diese Infomeldungen nicht als Fehlermeldungen per Mail versenden. Nun meine Frage, wie muss die Batchdatei erweitert werden, damit diese Mails nicht versendet werden. Vielen Dank.

Gruß

Christoph

Content-Key: 120800

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

Printed on: April 18, 2024 at 19:04 o'clock

Member: rubberman
rubberman Jul 20, 2009 at 00:25:07 (UTC)
Goto Top
Ein paar Dinge vorab:
- Den Befehl end gibt es nicht. ist normalerweise auch nicht nötig, da der Batch nach Abarbeitung der Befehlszeilen automatisch beendet wird. Im Zweifelsfall kann aber der Befehl exit angehängt werden.
-wait steht standardmäßig auch nicht zur Verfügung, hier bitte ebenfalls ping nutzen
-Für "goto ende" müsste eine Sprungmarke :ende existieren. Hier kann man "goto :eof" nutzen. Das ist eine imaginäre Sprungmarke, die für "End Of File" steht.

Nun zu deinem Problem. Mein Lösungsvorschlag ist, innerhalb einer FOR-Schleife die Echo-Ausgabe des Parameters %3 an den Findstr-Befehl zu übergeben. Hier wird am Zeilenanfang nach RD: und AD: gesucht. Wenn diese Zeichenfolgen gefunden wurden, wird der Batch beendet.
@echo off &setlocal
if exist mailinhalt.txt goto :eof
for /f "tokens=*" %%i in ('echo %~3^|findstr /b "RD: AD:"') do goto :eof  
echo Am %date% um %time:~0,8% Fehlerausl. %3>>c:\emailalarm\mailinhalt.txt
echo %3>>c:\emailalarm\subject.txt
ping -n 15 localhost>nul
:: [Hier erfolgt der Versand der Email mit Parametern und blat.exe, der auch funktioniert]
del c:\emailalarm\mailinhalt.txt
del c:\emailalarm\subject.txt
del c:\emailalarm\versandlog.txt
ping -n 61 localhost>nul
Member: bastla
bastla Jul 20, 2009 at 05:53:56 (UTC)
Goto Top
@rubberman
Deinen Erklärungen vorweg kann ich nur zustimmen ...

... allerdings frage ich mich (und jetzt Dich face-wink), wozu der Umweg über die "for"-Schleife dienen soll - eine Zeile
echo %~3|findstr /b "RD: AD:">nul && goto :eof
sollte eigentlich genügen.

Grüße
bastla
Member: wtaler
wtaler Jul 20, 2009 at 08:02:17 (UTC)
Goto Top
Danke für die schnelle Hilfe. Nun würde ich gerne noch wissen, wieviele Filter für den Ausschluß möglich sind oder ob es besser eine neue Datei werden sollte. Falls eine Datei optimaler ist, wie wird die dann in den findstr Befehl eingebaut?

Gruß

Christoph
Member: bastla
bastla Jul 20, 2009 at 08:14:18 (UTC)
Goto Top
Hallo wtaler!

Übersichtlicher wird's mit einer eigenen Datei (Verwendung: "/G:Datei" - siehe "findstr /?"), möglich sein sollten aber noch eine Reihe weiterer "Filterbegriffe" (solange sie aus einzelnen "Wörtern" bestehen) - welche Längenbegrenzung es dafür bei "findstr" gibt, habe ich noch nie gelesen / getetestet (vielleicht magst Du es ja versuchen face-wink) ...

Grüße
bastla
Member: rubberman
rubberman Jul 20, 2009 at 08:29:46 (UTC)
Goto Top
@ bastla
Gegenfrage. Warum einfach, wenns auch umständlich geht face-smile
Nein. Man fährt halt manchmal seine eingefahrene Schiene. Und was solls ... beides funktioniert.
Member: wtaler
wtaler Jul 20, 2009 at 08:36:31 (UTC)
Goto Top
Danke für Eue Hinweise und die ergänzenden Worte. Ich werde mich nun mal mit der Datei auseinandersetzen und weiter testen. Danke und ansonsten schließe ich den Beitrag als gelöst ab.

Gruß

Christoph
Member: bastla
bastla Jul 20, 2009 at 08:42:40 (UTC)
Goto Top
@rubberman
beides funktioniert.
... worauf es ja schließlich ankommt. face-smile

Da ich immer neugierig bin und gerne dazulerne, hatte ich mich nur gefragt, was die Schleife bringen sollte - und auf Anhieb keinen Vorteil entdeckt ...

Grüße
bastla