StefanV3 10 Geschrieben 1. Mai 2012 Melden Teilen Geschrieben 1. Mai 2012 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 Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 2. Mai 2012 Melden Teilen Geschrieben 2. Mai 2012 Moin, was fehlt, das ist eine Zählung, rauf oder runter, addition oder subtraktion, weiter eine Vergleichsoperation und ein Sprung. Die kann man selbst bauen oder auch die For-Scjleife verwenden mit dem Parameter /L, siehe for /? oder in der Hilfe. Solltest Du es nicht hinbekommen, dann kann ich dir auch helfen. Zitieren Link zu diesem Kommentar
StefanV3 10 Geschrieben 2. Mai 2012 Autor Melden Teilen Geschrieben 2. Mai 2012 Hallo, danke. Ich schau mir das mal an, dann melde ich mich wieder... Grüße Stefan Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 2. Mai 2012 Melden Teilen Geschrieben 2. Mai 2012 ping -n 1 Ist das Fehlen der IP-Adresse eine Absicht oder ein Versehen? Zitieren Link zu diesem Kommentar
StefanV3 10 Geschrieben 2. Mai 2012 Autor Melden Teilen Geschrieben 2. Mai 2012 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 Zitieren Link zu diesem Kommentar
StefanV3 10 Geschrieben 2. Mai 2012 Autor Melden Teilen Geschrieben 2. Mai 2012 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 Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 2. Mai 2012 Melden Teilen Geschrieben 2. Mai 2012 Gut so :) Zitieren Link zu diesem Kommentar
tesso 375 Geschrieben 2. Mai 2012 Melden Teilen Geschrieben 2. Mai 2012 Dokumentation ist was für die Heinis von der Wartung. :cool: Frei nach BOFH (oder war es "Real programmer don't use Pascal"?) Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.