Wie kann ich die gleiche Aufgabe mit einer Windows-Batch-Datei erledigen?
Erstelle ein Bash-Ping-Skript, um die Betriebszeit zu überprüfen Wir können mit dem `ping`-Befehl einen Ping-Test auf eine bestimmte IP-Adresse oder einen Hostnamen durchführen:

```bash
ping -c 10 8.8.8.8
echo $?
```

Dies versucht, 10 Pakete an die IP-Adresse `8.8.8.8` zu senden. Dann gibt das `echo` das Ergebnis an, Erfolg oder Fehler. Wir können dieses Ergebnis in einer `if`-Anweisung verwenden, wie folgt:

```bash
if ping -c 10 8.8.8.8 > /dev/null; then
    echo "funktioniert"
else
    echo "funktioniert nicht"
fi
```

Um die Betriebszeit zu berechnen, sollten wir viele Proben nehmen, die Fehler addieren und dann die Anzahl der Fehler durch die Gesamtzahl der Tests teilen.

Wir werden den `bc`-Befehl verwenden, um die Prozentsatzberechnung tatsächlich auszuführen.

```bash
#!/bin/bash

IP=8.8.8.8

TEST_COUNT=0
FAILURES=0

while true; do
    TEST_COUNT=$((TEST_COUNT + 1))
    if ! ping -c 10 "$IP" > /dev/null; then
        FAILURES=$((FAILURES + 1))
    fi

    UPTIME=$(bc -l <<< "100 - 100 * $FAILURES / $TEST_COUNT")

    echo "Betriebszeit: $UPTIME"

    sleep 1m
done
```

Einige mögliche Verbesserungen:

- Machen Sie die Schleife genau eine Minute lang, anstatt 1 Minute plus der Zeit, die der `ping`-Befehl benötigt. Dadurch wird das Ergebnis genauer.
- Verwenden Sie einen kontinuierlich aktualisierten Durchschnittswert anstelle von Additionen zur gleichen `FAILURES`-Variable während des gesamten Skriptdurchlaufs.
- Speichern Sie die Ergebnisse an einem Ort, um sie nützlich zu machen.
Um die gleiche Aufgabe mit einer Windows-Batch-Datei zu erledigen, kannst du den Befehl "ping" und den Befehl "set" verwenden, um die Ergebnisse zu speichern. Hier ist ein Beispiel-Skript:

@echo off

set IP=8.8.8.8
set TEST_COUNT=0
set FAILURES=0

:loop
set /a TEST_COUNT=TEST_COUNT+1
ping -n 10 %IP% >nul
if %errorlevel% neq 0 set /a FAILURES=FAILURES+1

set /a UPTIME=100-100*FAILURES/TEST_COUNT

echo Betriebszeit: %UPTIME%

timeout /t 60 /nobreak >nul
goto loop

Dieses Skript setzt die IP-Adresse für den Ping, die Anzahl der Tests und die Anzahl der aufgetretenen Fehler. Anschließend wird eine Endlosschleife gestartet, die alle 60 Sekunden einen Ping-Test durchführt. Die Ergebnisse werden mit dem "set"-Befehl gespeichert und der Betriebszeit-Prozentsatz wird mit der gleichen Methode wie im Bash-Skript berechnet und angezeigt. Der "timeout"-Befehl wird verwendet, um 60 Sekunden zu warten, bevor die nächste Schleife ausgeführt wird.