121416
Goto Top

Bitte batch-Script auf Fehler prüfen

Hallo,

ich habe ein kleines Script geschrieben, welches zuerst prüfen soll ob der vpn-Server erreichbar ist. Mit diesem soll er sich dann verbinden. Dies soll er bis zu 10x versuchen und bei Bedarf wieder. Der Algorithmus müsste stimmen, aber ich arbeite nie mit cmd/bat. Ich habe auch keinen Debugger.
Kann mal bitte jemand drüber schauen. Vielleicht ist es ja nur eine Kleinigkeit.

 
@echo off
set count = 0
:pingINT
ping -n 1 vpn.public.de | find /i "Antwort" > nul
if errorlevel 1 (
	if %count% LSS 10 (
		set count = %count% + 1
		goto pingINT 
	) else (
		echo Es konnte keine Internetverbindung aufgebaut werden oder der VPN-Server ist nicht bereit
		echo Soll der Verbindungsaufbau weiter versucht werden? j/n
		set /p wahl1 =
		if '%wahl1%' == 'n' goto ende
		if '%wahl1%' == 'j' (
			set count = 0
			goto pingINT
		) 
	) 
)
ping -n 1 gateway.privat.lokal | find /i "Antwort" > nul
if errorlevel 1 (
	net stop OpenVPNService && net start OpenVPNService
	set count = 0
	goto pingVPN
) else (
	echo Der VPN-Tunnel wurde aufgebaut
	goto ende 
)
set count = 1
:pingVPN
ping -n 1 gateway.privat.lokal | find /i "Antwort" > nul
if errorlevel 1 (
	if %count% LSS 10 (
		set count = %count% + 1
		goto pingVPN 
	) else (
		echo Der VPN-Tunnel konnte nicht aufgebaut werden
		echo Soll der Verbindungsaufbau weiter versucht werden? j/n
		set /p wahl2 =
		if '%wahl2%' == 'n' goto ende
		if '%wahl2%' == 'j' (
			set count = 1
			goto pingVPN
		) 
	)
) else (
	echo Der VPN-Tunnel wurde aufgebaut
)
:ende
echo Das Fenster wird geschlossen
pause

Content-Key: 268671

Url: https://administrator.de/contentid/268671

Printed on: April 24, 2024 at 16:04 o'clock

Member: Biber
Biber Apr 09, 2015 updated at 15:05:52 (UTC)
Goto Top
Moin maniacmacpain,

willkommen im Forum.

Bei den Variablendefinitionen hast du unter dem CMD-Interpreter wenig Freiheiten zur lesbaren Formatierung.
Du kannst nicht zwischen Variablennamen und dem Gleichheitszeiechen Lücken/Leerzeichen lassen, damit es optisch etwas gefälliger aussieht.

Mit "set count = 1" belegst du nämlich nicht eine Variable namens "count" mit dem Wert 1 (wie es in anderen Skriptsprachen wäre), sondern eine Variable namens "Count " (also "CountLeerzeichen").
Da du aber in deinem Schnipsel jeweils "count " oder "wahl1 "/"wahl2 " mit SET definierst und später ganz, ganz andere Variablen namens "count", "wahl1" und "wahl2" prüfst, kann es nicht klappen.

Nimm bei allen SET-Anweisungen das Leerzeichen zwischen Variablennamen und Gleichheitszeichen raus.

Mehr deines Schnipsels habe ich nicht geprüft.

Grüße
Biber