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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 120800
Url: https://administrator.de/forum/dateiinhalt-von-subject-txt-nach-einem-filter-pruefen-und-danach-die-datei-subject-txt-und-mailinhalt-txt-120800.html
Ausgedruckt am: 04.04.2025 um 04:04 Uhr
7 Kommentare
Neuester Kommentar
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.
- 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
@rubberman
Deinen Erklärungen vorweg kann ich nur zustimmen ...
... allerdings frage ich mich (und jetzt Dich
), wozu der Umweg über die "for"-Schleife dienen soll - eine Zeile
sollte eigentlich genügen.
Grüße
bastla
Deinen Erklärungen vorweg kann ich nur zustimmen ...
... allerdings frage ich mich (und jetzt Dich
echo %~3|findstr /b "RD: AD:">nul && goto :eof
Grüße
bastla
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
) ...
Grüße
bastla
Ü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
Grüße
bastla
@rubberman

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
beides funktioniert.
... worauf es ja schließlich ankommt. 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