ffly82
Goto Top

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.

Content-ID: 294696

Url: https://administrator.de/forum/wenn-ip-erreicbar-programm-schliessen-294696.html

Ausgedruckt am: 23.12.2024 um 02:12 Uhr

126919
Lösung 126919 30.01.2016 aktualisiert um 23:03:12 Uhr
Goto Top
Here you go ...
@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
FFly82
FFly82 30.01.2016 um 23:03:50 Uhr
Goto Top
Super.... Allerbesten dank.