Wenn IP erreicbar, Programm schließen
Ich komm hier nicht wirklich weiter.
Ich benötige eine Batch die folgendes tut:
1. Prüfen ob eine IP im gleichen Netz erreichbar ist (Muss wohl nach TTL gesucht werden da der "normale" Errorlevel des Pings nicht das passende Ergebniss liefert wenn ich das richtig gelesen habe)
1.1 Wenn IP erreichbar -> Batch beenden und nix weiter tuen
1.2 Wenn IP nicht erreichbar -> 2
2. Externe.exe starten (wenn diese nicht zufällig schon läuft)
3. Dauerhaft weiter prüfen (alle 3 Sekunden oder so) ob die IP aus Punkt 1 doch noch online kommt
3.1 Wenn ja -> 4
4 Externe.exe beenden, Extern2.exe starten und Batch beenden
5. Wenn IP aus Punkt 1 nach 30 Minuten noch nicht online gekommen ist -> siehe Punkt 4
Ich vermute das ist recht schnell zusammengeschrieben von jemanden mit Ahnung. Nur ich habe eben die Ahnung leider nicht.
Ich benötige eine Batch die folgendes tut:
1. Prüfen ob eine IP im gleichen Netz erreichbar ist (Muss wohl nach TTL gesucht werden da der "normale" Errorlevel des Pings nicht das passende Ergebniss liefert wenn ich das richtig gelesen habe)
1.1 Wenn IP erreichbar -> Batch beenden und nix weiter tuen
1.2 Wenn IP nicht erreichbar -> 2
2. Externe.exe starten (wenn diese nicht zufällig schon läuft)
3. Dauerhaft weiter prüfen (alle 3 Sekunden oder so) ob die IP aus Punkt 1 doch noch online kommt
3.1 Wenn ja -> 4
4 Externe.exe beenden, Extern2.exe starten und Batch beenden
5. Wenn IP aus Punkt 1 nach 30 Minuten noch nicht online gekommen ist -> siehe Punkt 4
Ich vermute das ist recht schnell zusammengeschrieben von jemanden mit Ahnung. Nur ich habe eben die Ahnung leider nicht.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 294696
Url: https://administrator.de/contentid/294696
Ausgedruckt am: 22.11.2024 um 13:11 Uhr
2 Kommentare
Neuester Kommentar
Here you go ...
fk
@echo off & setlocal Enabledelayedexpansion
REM ------------- Variables --------
set IP=192.168.20.55
set "PROG=c:\Ordner\Externe.exe"
set "PROG2=c:\Ordner\Externe2.exe"
set maxwait=1800
REM ------------- end variables ----
for /f "delims=" %%a in ("%PROG%") do set "PROCESSNAME=%%~nxa"
echo Checking status of %IP% ...
wmic PATH Win32_PingStatus where Address='%IP%' get StatusCode /format:list | find "StatusCode=0" >nul && (
echo IP %IP% is online, exiting.
) || (
echo IP Offline
tasklist | findstr /ic:"%PROCESSNAME%" && echo %PROG% is already running. || echo Starting "%PROG%" & start "" "%PROG%"
set rest=%maxwait%
:pingstart
echo Waiting for Host to come up [!rest!s left] ...
timeout /t 3 >nul
set /a rest-=3
wmic PATH Win32_PingStatus where Address='%IP%' get StatusCode /format:list | find "StatusCode=0" >nul && start "" "%PROG2%" || if !rest! GTR 0 (goto :pingstart) else (taskkill /IM "%PROCESSNAME%" & start "" "%PROG2%")
)
fk