Batch bis zum Amoklauf
-
Hi,
ich hab' mich soeben mal wieder mit einer etwas unprofessionelleren "Programmiersprache" versucht: mit simplen Batch-Dateien für WinXP.
Meine Idee: Ich brauche für einen VPN-Client einen Dienst, der sonst nicht nötig ist. Kein Problem: Eine Batch-Datei startet den Dienst, dann den Client und wenn ich den Client zumache endet der Dienst. Soweit die Theorie. Jetzt die praktischen Ansätze.Das klappt alles nicht (sortiert nach absteigender Logik
):
net start "Cisco Systems, Inc. VPN Service" start /wait "C:\Programme\Cisco Systems\VPN Client\ipsecdialer.exe" net stop "Cisco Systems, Inc. VPN Service"
net start "Cisco Systems, Inc. VPN Service" start " " /wait "C:\Programme\Cisco Systems\VPN Client\ipsecdialer.exe" net stop "Cisco Systems, Inc. VPN Service"
net start "Cisco Systems, Inc. VPN Service" "C:\Programme\Cisco Systems\VPN Client\ipsecdialer.exe" net stop "Cisco Systems, Inc. VPN Service"
net start "Cisco Systems, Inc. VPN Service" cd /d "C:\Programme\Cisco Systems\VPN Client\" ipsecdialer.exe net stop "Cisco Systems, Inc. VPN Service"
So, das reicht erstmal. Bei der ersten Variante ist der Pfad der Fenstertitel für eine neue Kommandozeile, bei allen anderen Varianten wird der Dienst gestoppt und anschließend auf das beenden von "ipsecdialer.exe" gewartet...
Kann das Quiz jemand auflösen?
Besten Dank schonmal
-
Schreib doch mal bitte, wie sich Dein Rechner verhält, wenn Du die Batch ausführst, oder n paar Fehlermeldungen. Ich kann da so erst mal nichts fehlerhaftes dran erkennen.
Möglicherweise hast Du den Namen des Dienstes nicht richtig geschrieben? Oder vielleicht gibts Firewallprobleme, oder XPAntiSpy hat irgendwas in der Registrierung abgeschaltet? Keine Ahnung, hab einfach nur Brainstorming gemacht ...
Gruß, Matze
-
beachte auch, dass das Programm erst gestartet wird, wenn
net start
(erfolgreich) beendet wurde
-
oh ja, stimmt. auch wenns ein dienst ist, isses wohl so. dann schlage ich vor mit mehreren batch files zu arbeiten.
batch_ file_ 1.bat: dienst starten und batch2 aufrufen
net start "Cisco Systems, Inc. VPN Service"
batch_ file_ 2.batbatch_ file_ 2.bat: client starten, wenn client schließt dann sollte danach auch der dienst geschlossen werden
C:\Programme\Cisco Systems\VPN Client\ipsecdialer.exe
net stop "Cisco Systems, Inc. VPN Service"möglicherweise klappts ja so
-
man kann auch den
net
-Befehl überstart /wait
aufrufen.also in etwa so:
start /wait net start "Cisco Systems, Inc. VPN Service" start /wait "C:\Programme\Cisco Systems\VPN Client\ipsecdialer.exe" net stop "Cisco Systems, Inc. VPN Service"
und achte darauf, dass der Dienst wirklich so heißt. Nicht, dass du statt dem Dienstnamen den Anzeigenamen verwendest
-
yo das is noch eleganter
-
Vielen Dank für die ganzen Antworten.
Der Service hat wirklich so einen komplizierten Namen, aber net start/stop funktioniert trotzdem. Bei der letzten Variante öffnet sich ein zweites CMD-Fenster, dessen Titel "C:\Programme\Cisco Systems\VPN Client\ipsecdialer.exe" lautet - auch nett
Das liegt wohl an den Anführungszeichen. Wenn ich das aber zu beheben versuche, indem ich einen Fenstertitel "" vorgebe, dann wird net stop noch ausgeführt, während der Client läuft und der Client bricht mit einer Fehlermeldung ab. Das geht also auch nicht. Das sieht so aus:start /wait net start "Cisco Systems, Inc. VPN Service" start "" /wait "C:\Programme\Cisco Systems\VPN Client\ipsecdialer.exe" net stop "Cisco Systems, Inc. VPN Service"
Dann hab' ich noch eine Variante mit Call versucht. Führt aber zu dem gleichen Problem:
start /wait net start "Cisco Systems, Inc. VPN Service" call :StartClient net stop "Cisco Systems, Inc. VPN Service" exit :StartClient start "" /wait "C:\Programme\Cisco Systems\VPN Client\ipsecdialer.exe" goto :EOF