knechtibus
Goto Top

Hochzählen einer Variable in einer Textdatei beim ausführen einer Batch Datei

Hallo die Damen und Herren,

ich habe da ein kleines Problem, welches wahrscheinlich für die meisten von Euch erbärmlich einfach erscheint.
Tortz allem beschäftigt es mich als absoluten Programmieranfänger. Ich versuche einmal das Problem zu schildern.
Vorab: Das Problem soll kompelett mit Batch Dateien gelöst werden!

Ich habe ein Programm, das in unregelmäßigen Abständen eine Batch Datei aufruft (Batch Datei #1), das macht es auch schon. Diese Batch Datei soll jetzt ganz simpel eine Variable in einer Text Datei hochzählen. Also in der Text Datei steht eine Variable mit dem Wert 1 und die Batch Datei #1 erhöht den Wert dieser Variablen wenn sie ausgeführt werden um den Wert 1 (Also nachdem die Batch Datei #1 das zehnte mal ausgeführt wurde, steht in der Text Datei der Wert 10).

So ich denke mal das war mein kleineres Problem. Jetzt kommt die zweite Batch Datei ins Spiel. Diese Batch Datei #2 soll nun alle 10 Minuten die Variable aus der oben erwähnten Text Datei auslesen. Wenn der Wert dieser Variablen größer 100 ist, soll diese Batch Datei #2 eine e-mail versenden. Ist der Wert kleiner 100 soll der Wert in der Textdatei wieder auf ihren Anfangswert 1 zurückgesetzt werden.

Das mit dem e-mail versenden bekomme ich hin aber das alles drum herum leider nicht.

Ich hoffe ich konnte mein Problem einigermaßen deutlich beschreiben, ansonsten bemühe ich mich gerne noch um eine andere/ausführlichere Beschreibung.

Vielen Dank schon einmal im Voraus.

MfG Knechtibus

Content-ID: 109821

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

Ausgedruckt am: 20.11.2024 um 09:11 Uhr

bastla
bastla 24.02.2009 um 14:41:07 Uhr
Goto Top
Hallo knechtibus und willkommen im Forum!

Mit dem Hochzählen hattest Du recht - keine große Sache:
@echo off & setlocal
set "NrDatei=D:\Nummer.txt"  
if exist "%NrDatei%" (  
    set /p Nr=<"%NrDatei%"  
) else (
    set Nr=0
)
set /a Nr+=1
>"%NrDatei%" echo %Nr%  

Das Überprüfen und Mail-Versenden in der zweiten Datei sollte aber auch keine Probleme bereiten:
@echo off & setlocal
set "NrDatei=D:\Nummer.txt"  
if exist "%NrDatei%" (  
    set /p Nr=<"%NrDatei%"  
) else (
    set Nr=0
)
if %Nr% gtr 100 (
    REM SendMail
) else (
    >"%NrDatei%" echo 1  
)
Da Du vermutlich nicht wirklich 3 Fälle unterscheiden willst ("größer 100", "kleiner 100", und als weitere Möglichkeit "gleich 100"), wird in der obigen Fassung auch bei einem Wert von genau 100 noch der Anfangswert geschrieben.

Sollte übrigens nach dem Senden der Mail nicht auch der Zähler zurückgesetzt werden (da ansonsten ja in 10 Minuten automatisch die nächste Mail fällig wird)?

Falls ja, würden sich die Zeilen ab Zeilennummer 08 reduzieren auf:
if %Nr% gtr 100 REM SendMail
>"%NrDatei%" echo 1  

Bliebe noch das Ausführen in 10 Minuten-Abständen ...

Entweder verwendest Du den Taskplaner dafür, oder der Batch2 müsste in einer Schleife laufen und eine jeweils 10-minütige Pause einlegen. Dafür würde sich etwa die "sleep.exe" aus den Windows Server 2003 Resource Kit Tools eignen.

Grüße
bastla
knechtibus
knechtibus 24.02.2009 um 14:57:07 Uhr
Goto Top
Danke Bastla,

werde es auf jeden Fall in den nächsten Tagen ausprobieren und mich dann nochmal melden.

Vielen Dank schonmal

MfG Knechtibus
knechtibus
knechtibus 25.02.2009 um 08:05:41 Uhr
Goto Top
Schönen Guten Morgen,

hab mich also gerade nochmal rangesetzt und alles zusammengepuzzelt. Und was soll ich sagen...es funktioniert einwandfrei!

Vielen Dank bastla, ich hätte wahrscheinlich noch Tage daran gesessen. Hab selten so ein geniales Forum gesehen.

MfG knechtibus