Jump to content

Batch Script: Schleife auf 100 Durchläufe begrenzen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo,

 

ich habe jetzt einen kleinen Rechner als einfachen File- und Printserver mit Windows XP als OS. Dieser fährt nach einer halben Stunde ohne Zugriff automatisch in den Ruhezustand.

 

Nun wecke ich den Server mit ping via batch script auf und lasse anschließend die Netzlaufwerke verbinden. Nun ist es aber so, daß der Rechner ja einen Moment braucht bis er Betriebsbereit ist. Deswegen pinge ich per Schleife den Rechner solange an, bis eine Antwort zurück kommt. Das erledige ich so:

 

:wait

ping -n 1 |find "Zeit<">nul
if %errorlevel%==1 goto wait

 

Das funktioniert auch wunderbar. Nun hat das ganze aber den Nachteil, daß das Script endlos läuft, wenn der Server nicht erreichbar ist. Deswegen will ich die Schleife z.B auf 100 Loops begrenzen und das Script dann mit einer entspr. (Feher-)Meldung beeenden. Wie kann ich das am besten lösen?

 

MfG

 

Stefan

Link zu diesem Kommentar

Hallo,

 

ich habe es nun gelöst. Mein Script sieht wie folgt aus:

 

@echo off
title Netzlaufwerke mappen
echo Netzlaufwerke loeschen
echo.

if exist x: net use x: /delete
if exist y: net use y: /delete
if exist z: net use z: /delete

rem Variable "cnt" auf 100 setzen
set cnt=100
:enter_loop
rem Server pingen und bestimmten String "Zeit<" finden
ping -n 1 server|find "Zeit<">nul
rem Ping auswerten, wenn errorlevel 0 dann gehe zu "map_shares"
if %errorlevel%==0 goto map_shares
echo Noch %cnt% Versuche
echo.
rem Zähler prüfen, wenn Zähler 0 dann gehe zu ende_loop
if %cnt% EQU 0 goto ende_loop
rem Zähler heruntersetzen
set /a cnt="cnt-1"
goto enter_loop


:map_shares

echo Netzlaufwerk x: verbinden
echo.
net use x: \\server\share_1 /persistent:no
echo Netzlaufwerk y: verbinden
echo.
net use y: \\server\share_2 /persistent:no
echo Netzlaufwerk z: verbinden
echo.
net use z: \\server\share_3 /persistent:no

goto success

:ende_loop
color 0c
echo Server nicht erreichbar

goto eof

:success
color 0a
echo Netzlaufwerke erfolgreich gemappt!
goto eof

:eof
ping localhost -n 10>nul

 

Habe es kommentiert, sodas andere Suchende das hoffentlich verstehen...

 

Grüße

 

Stefan

Link zu diesem Kommentar

Hallo,

 

ich habe das Internet nochmal bemüht und eine andere Lösung gefunden:

 

Batch Skript mit Counter und einer Schleife | Programmierung allgemein

 

Nicht mit "FOR" weil, das verstehe ich irgendwie nicht. Mein Script sieht wie folgt aus:

 

@echo off
title Netzlaufwerke mappen
echo Netzlaufwerke loeschen
echo.

if exist x: net use x: /delete
if exist y: net use y: /delete
if exist z: net use z: /delete

rem Variable "cnt" auf 100 setzen
set cnt=100
:enter_loop
rem Server pingen und bestimmten String "Zeit<" finden
ping -n 1 server|find "Zeit<">nul
rem Ping auswerten, wenn errorlevel 0 dann gehe zu "map_shares"
if %errorlevel%==0 goto map_shares
echo Noch %cnt% Versuche
echo.
rem Zähler prüfen, wenn Zähler 0 dann gehe zu ende_loop
if %cnt% EQU 0 goto ende_loop
rem Zähler heruntersetzen
set /a cnt="cnt-1"
goto enter_loop


:map_shares

echo Netzlaufwerk x: verbinden
echo.
net use x: \\server\share_1 /persistent:no
echo Netzlaufwerk y: verbinden
echo.
net use y: \\server\share_2 /persistent:no
echo Netzlaufwerk z: verbinden
echo.
net use z: \\server\share_3 /persistent:no

goto success

:ende_loop
color 0c
echo Server nicht erreichbar

goto eof

:success
color 0a
echo Netzlaufwerke erfolgreich gemappt!
goto eof

:eof
ping localhost -n 10>nul

 

Habe es kommentiert, sodas andere Suchende das hoffentlich verstehen...

 

Grüße

 

Stefan

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...