teddytrecker
Goto Top

Endlos Ping abbrechen ohne STRG C

Moin Moin zusammen,

ich würde geren wissen, ob es eine Möglichkeit gibt, ein Endlos Ping aus einer Batch abzubrechen, ohne dafür die Tastenkombination STRG+C zu benutzen. Hintergrund dabei ist, dass ich für unseren Helpdesk ein kleines Tool zum abfragen von Clients geschrieben habe, wo man z.B. Ip - oder Mac Adressen von Hosts abfragen kann, Hosts Herunterfahren oder Neustarten, Net Send Nachrichten verschicken und eben den Host/Client anpingen kann. Über Choice wird abgefragt ob "Normaler Ping" oder "Endlos Ping". Wenn ich jedoch nun so einen Endlos Ping auswähle und will ihn wieder abbrechen geht das nur über STRG C. Dann kommt die Frage Batchvorgang abbrechen J,N? Wenn ich Ja wähle, wird der ganze Batchvorgang, sprich, das Tool beendet. Wenn Nein gewählt wird, geht es in der Batch Reihenfolge weiter, was ja auch gewünscht ist. Nur finde ich es nicht so schön, dass man, obwohl man eigentlich gar nicht aus der Batch will, die Frage mit dem Abbrechen, was eigentlich nur für den Ping gelten sollte, mit Nein beantworten muss um in der Batch zu bleiben.
Ich habe schon versucht eine Choice abfrage (Ping abbrechen? J,N) darunter zu stellen, geht aber nicht, weil der Befehl (Endlos Ping) ja noch nicht beendet ist und die Batch an dieser Stelle wartet. Am besten wäre eine beliebeige Tastatureingabe gefolgt von der Frage Ping abbrechen. Bei Nein weiter mit Endlos Ping, bei Ja zurück zur Auswahl "Normaler Ping - Endlos Ping". Hat da jemand eine Lösung??

MfG
Teddytrecker

Content-Key: 63521

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

Printed on: April 25, 2024 at 15:04 o'clock

Member: kristov
kristov Jul 11, 2007 at 09:23:39 (UTC)
Goto Top
Naja, ein Endlos-Ping ist halt ein Endlos-Ping. Wenn der in einer batch steht, wird natürlich der gesamte batch abgebrochen.

Mein Vorschlag wäre, statt ping -t ping -n zu verwenden. Man könnte ja in der batch abfragen, wieviele pings gemacht werden sollen und die Anzahl an ping -n übergeben.
Member: teddytrecker
teddytrecker Jul 11, 2007 at 10:09:22 (UTC)
Goto Top
Habe ich auch schon drüber nachgedacht. Mit set /P die Anzahl oder sozusagen die Sekunden abfragen und dann einbauen. Das Problem dabei ist nur, wenn ich eine Fehleranalyse auf einem Switch machen möchte und gebe 300 (also 5 Min.) vor, das Problem ist aber nach zwei Min. gelöst, müsste ich wieder mit STRG C abbrechen. Man kann eben nie vorraussagen wie lange man so ein Endlosping braucht.
Member: miniversum
miniversum Jul 11, 2007 at 11:05:51 (UTC)
Goto Top
Ist zwar ne nicht ganz so tolle Lösung aber versuchs mal so:
Du legst eine dauerping.bat an die nur den Endlospingbefehl enthällt.
Dann schreibst du in deine eigentliche Batch das rein:
start /wait cmd /C dauerping.bat
Geht zwar ein neues Fenster für den Ping auf aber wenn du das mit strg-C abbrichst geht es wieder zu und es läuft die andere Batch weiter.

miniversum
Member: teddytrecker
teddytrecker Jul 11, 2007 at 13:05:52 (UTC)
Goto Top
Von der Sache her eigentlich sehr gut. Man hätte ein unabhämgiges Fenster und könnte mit anderen Sachen weitermachen. Ich arbeite in der Batch jedoch mit einem über set /P abgefragtem Hostnamen (Rechnername) der dann als Variable überall wieder auftaucht (z.B. ping -t %HOSTNAME%). Kann ich denn die Variable in die endlosping.bat übernehmen?
Member: miniversum
miniversum Jul 11, 2007 at 13:24:36 (UTC)
Goto Top
Klar. das war auchnur als Beispiel gedacht.
Ich nenen sie jetzt mal ablauf.bat und dauerping.bat

Die ablauf.bat würde dan so aussehen:
set /p host=Host:
start /wait cmd /C dauerping.bat %host%
Dabei würde die Batch Stehen bleiben bis der Dauerping abgebrochen wird. MAchst dud as /Wait weg läuft sie weiter.

Die dauerping.bat würde so aussehen:
ping -t %1
%1 entspricht hier dem Übergebenen Parameter %host%

miniversum
Mitglied: 50496
50496 Jul 11, 2007 at 16:49:29 (UTC)
Goto Top
Geht doch mit choice:

@echo off & setlocal
set el=0

:schleife
ping -n 1 localhost  > nul
choice /C:jn /N /T:n,1
set el=%errorlevel%
rem echo %el%
if %el% equ 0 goto :eof
if %el% equ 2 goto schleife


:weiter
echo hier geht's weiter  

0 entspricht STRG-C
1 entpricht "j"
2 entspricht "n"