bei mir wird pswin (Pc-Wetterstation) halbstündlich vom Cronjob ausgeführt, dabei soll auch ein Mailreport und auch die Daten an externe Versand werden.
So spare ich Resourcen auf dem System und ich kann das Programm im Hintergrund, wenn kein User angemeldet ist, starten.
Da es verschiedene Optionen gibt, soll die Batchdatei die Uhrzeit prüfen und gegebenenfalls entsprechende Aktionen ausführen.
Zudem darf die exe nur einmal ausgeführt werden, denn ansonsten ist der COM-Port nicht erreichbar.
Ältere Programmstarts, die noch im Speicher sind, werden dann versucht zu schließen (Freeware Programm PV.exe erforderlich, http://www.mac-net.com/428484.page), bei Fehler, wird das Programm dann nicht ein zweites mal gestartet.
Anregungen und hinweise an mich.
Grüße Erik
Hier die Batch-Datei:
Code: Alles auswählen
@echo off
rem Programm wetterstart von Erik Groennerud
rem (c) www.koelschwetter.de 22.1.2007
rem freie Nutzung und Weitergabe, sofern dieser Kopf enthalten bleibt
rem Programm analysiert die Uhrzeit und startet dementsprechend das Programm mit verschiedenen Optionen.
rem Diese Batchdatei wird alle 30 Minuten zur vollen Stunde vom Taskmanager ausgeführt.
rem Um 12 Uhr wird ein Mailreport generiert
rem Alle 6 Stunden werden die Wetterdaten an die externen Dienste weitergeleitet.
rem NUTZUNG AUF EIGENE GEFAHR!!
rem Uhrzeit für Auswertung formatieren
for /F "tokens=1,2 delims=:, " %%i in ('time /T') do set time=%%i%%j
rem Variablen setzen
set exe=C:\Programme\WsWin\Wswin32.exe
set option_default=/auto
set option_mailreport=/ER
set option_datenversand=/WA
set exefile=Wswin32.exe
set info=0
REM Check, ob Programm bereits gestartet wurde, alte Version wird dann beendet.
for /F "tokens=1-7" %%a in ('tasklist /NH /FI "imagename eq %exefile%"') do ( ; if "%%a"=="%exefile%" set info=1
)
goto %info%
:1
Echo Das Programm %exefile% laeuft bereits auf diesem System. Zweiter Start ist nicht erlaubt. Daher wird nun versucht den zweiten Aufruf zu beenden
pv -f -k %exefile%
REM Erneuter check
set info=0
for /F "tokens=1-7" %%a in ('tasklist /NH /FI "imagename eq %exefile%"') do ( ; if "%%a"=="%exefile%" set info=11
)
goto %info%
:0
Echo Programm ist nicht geladen.
REM Startlogic
rem Logic - 12 Uhr Mailreport, 0:30, 6:30, 12:30, 18:30 Uhr Datenversand, sonst einfache Auswertung
if %time% EQU 1200 (
echo Mailreport Versenden
%exe% %option_default% %option_mailreport%
) else (
if %time% EQU 0030 (
echo Daten übertragen
%exe% %option_default% %option_datenversand%
goto ende
)
if %time% EQU 0630 (
echo Daten übertragen
%exe% %option_default% %option_datenversand%
goto ende
)
if %time% EQU 1230 (
echo Daten übertragen
%exe% %option_default% %option_datenversand%
goto ende
)
if %time% EQU 1830 (
echo Daten übertragen
%exe% %option_default% %option_datenversand%
goto ende
)
echo Nur Auswertung
%exe% %option_default%
)
:ende
:11