mc-doubleyou
Goto Top

Batch schließt sich ohne Dienst -.-

Man würde glauben jetzt da ich doch schon länger batche und auch immer erst google usw. würden die Fragen weniger, aber denkste -.-

Mein Problem(chen) ist das die Batch sich einfach schließt ohne pingen und ohne eine Datei zu erstellen.

Wenn ich es in der Kommandoline probiere und zuvor natürlich die "%" kürze dann meint er das ping hier nicht verarbeitet werden kann, versteh nur leider nicht warum.

Naja vl. sieht den Fehler ja wer, wäre nett.

@echo on

set /p ip="IP eingeben die gepingt werden soll: "  

if "%ip%"=="" goto:eof  
if "%ip%"=="exit" goto:eof  

set name=%date:~6,4%-%date:~3,2%-%date:~0,2%_%time:~0,2%-%time:~3,2%_%ip%

echo.
echo Zum Beenden des Dauerpings einfach das Fenster schliessen!

:start
for /f %%i ('ping -n 1 %ip% | findstr "Ant"') do @set issue=%%i  

echo %issue% - %date% - %time:~0,8% >> %name%.log
goto start

lg mc-dy

Content-Key: 160846

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

Printed on: April 23, 2024 at 08:04 o'clock

Mitglied: 60730
60730 Feb 15, 2011 at 17:25:03 (UTC)
Goto Top
moin,

ein - der erste Blick sagt mir:
for /f %%i ('ping -n 1 %ip% | findstr "Ant"')
  • Da fehlt mindestens ein in vor der sich öffnenden Klammer.
  • In der Klammer darf kein | stehen - außer es ist mit ^ maskiert.
  • Dann vermute ich - du willst mit der Schleife irgendwas bewirken - wahrscheinlich sowas
for /f "tokens=5" %i in ('ping -n 1 %ip% ^| findstr "Ant"') do echo %i


btw: Batche zum Testen immer in einer vorher selbst geöffneten Dosbuxse starten, nie per Doppelklick.
Und einzelne Befehlszeilen gerne solo ohne die Batch drumrum testen, dann klappert das auch mit dem Storch face-wink

Gruß
Member: bastla
bastla Feb 15, 2011 at 17:36:19 (UTC)
Goto Top
... und idealer Weise kommt sogar noch ein "<" in der "ping"-Ausgabe vor [Edit] ... aber nicht mehr in %%i, wenn doch vorher abgeschnitten wird - ergibt aber eine eher fade Ausgabe ... [/Edit] - also wären die Chancen mit
for /f %%i in ('ping -n 1 %ip% ^| findstr "Ant"') do set "issue=%%i"  

echo %issue:<=^<% - %date% - %time:~0,8% >> %name%.log
vermutlich wesentlich besser ... face-wink

Grüße
bastla
Mitglied: 60730
60730 Feb 15, 2011 at 17:43:40 (UTC)
Goto Top
@bastla:

na dann - leg ich auch noch einen drauf...

set /p ip="IP eingeben die gepingt werden soll: "
  • bedeutet ja - mit irgendeiner wechselnden IP soll Pong Ping gespielt werden und leerzeichen mögen wir ja auch nicht
echo %ip%,%issue:<=^<% - %date% - %time:~0,8%>> %name%.log
btw: Batch schließt sich ohne Dienst
ich schliesse den Dienst am Dienstag ab und die Diensttüre hinter mir mir zu.

Grüße
Member: bastla
bastla Feb 15, 2011 at 17:53:02 (UTC)
Goto Top
@t-mo
Die IP steckt schon im Namen des Logfiles ...

Allerdings sollte noch ein
set "issue="
ganz knapp vor Zeile 14 platziert werden - damit auch bemerkt wird, wenn aus der "for"-Schleife nix mehr kommt ...

... und in diesem Fall ev auch das Schreiben ins Log dankend abgelehnt werden kann:
if defined issue >>%name%.log echo %issue:<=^<% - %date% - %time:~0,8%
Grüße
bastla
Mitglied: 60730
60730 Feb 15, 2011 at 21:29:43 (UTC)
Goto Top
Zitat von @bastla:
@t-mo
Die IP steckt schon im Namen des Logfiles ...

  • hüstel - Urlaubsreifer und blinder, als ich es die letzten Tage bin, geht wohl nicht mehr hoffentlich
damit auch bemerkt wird, wenn aus der "for"-Schleife nix mehr kommt ...

Naja, ob wir es überhaupt bemerken, dass wir uns bei diesem Fred für den Job des Alleinunterhalters beworben haben?

Das Postfach vom TO müßte doch schon vollgelaufen sein "face-sad"
Aber ich schweife vom Thema ab...

Apropos schweifen
btw: Gestern wurden bei einem Wort, dass in Gänsefüßchen steht noch zwei "schräge Vögel angedichtet - heute sind es geschweifte Klammern.

edit - nein - die hast du wohl reingebastelt (um "das" zu umgehen?)

edit² noop - Gänsefüsse kann man wieder ohne Schnickschnack setzen.
edit³ dafür wird aus nem Smile ein Facewink usw.

N8 & Grüße
Member: mc-doubleyou
mc-doubleyou Feb 17, 2011 at 08:21:44 (UTC)
Goto Top
Danke erstmal,

Also das mit in hab ich mal verstanden und schähm ich mich auch grad *gg*

Zitat von @bastla:
... und idealer Weise kommt sogar noch ein "<" in der "ping"-Ausgabe vor [Edit] ... aber nicht
mehr in %%i, wenn doch vorher abgeschnitten wird - ergibt aber eine eher fade Ausgabe ... [/Edit] - also wären die Chancen
mit
for /f %%i in ('ping -n 1 %ip% ^| findstr "Ant"') do set "issue=%%i"  
> 
> echo %issue:<=^<% - %date% - %time:~0,8% >> %name%.log
> 
vermutlich wesentlich besser ... face-wink

Grüße
bastla

Zeile 3 muss ich gestehen kapier ich grad überhaupt nicht


Zitat von @bastla:
@t-mo
Die IP steckt schon im Namen des Logfiles ...

Allerdings sollte noch ein
set "issue="
> 
ganz knapp vor Zeile 14 platziert werden - damit auch bemerkt wird, wenn aus der "for"-Schleife nix mehr kommt ...

... und in diesem Fall ev auch das Schreiben ins Log dankend abgelehnt werden kann:
if defined issue >>%name%.log echo %issue:<=^<% - %date% - %time:~0,8%
> 
Grüße
bastla

Auch hier habe ich so meine Problemchen zu verstehen was es mit <=^<% usw auf sich hat sieht mir nach einem tollen Muster aus ;)

lg mc-dy
Member: Biber
Biber Feb 17, 2011 at 08:50:20 (UTC)
Goto Top
[OT]
Moin mc-doubleyou,

Zitat von @mc-doubleyou:
Auch hier habe ich so meine Problemchen zu verstehen was es mit <=^<% usw auf sich hat sieht mir nach einem tollen Muster aus ;)
Ich sach ma' so...
Auf einem Büro-Kaffeebecher könnte ich mir das Muster vorstellen
Als Wohnzimmertapete wäre es mit ein wenig zu unruhig...

Grüße
Biber
[/OT]
Member: mc-doubleyou
mc-doubleyou Feb 17, 2011 at 11:18:34 (UTC)
Goto Top
[OT]

joa dachte ich mehr an so Kaffee bescher statt E=MC² eben <=^<%


[/OT]

PS: Bitte erklären was es wirklich heißt. THX!

lg mc-dy
Member: bastla
bastla Feb 17, 2011 at 11:42:37 (UTC)
Goto Top
Hallo mc-w!

Mit dem Zeichen ^ wird der Interpreter angewiesen, das folgende Zeichen nicht zu interpretieren, sonden es einfach so (als gewöhnlichen Text) zu verwenden (wird auch "maskieren" genannt) - das ist nur bei bestimmten Sonderzeichen, die eben ansonsten eine andere Bedeutung haben, sinnvoll/notwendig.

Da in einer vollständigen (hatte nur kurz drübergeschaut und die Reduktion auf das erste Wort der Zeile nicht mitbekommen) Ergebniszeile eines "ping" (wünschenswerter Weise) die Zeitangabe "<1 ms" vorkommen kann, wollte ich auf Nummer sicher gehen und dieses Zeichen (das ansonsten ja als Eingabe-Umleitung gedeutet würde) "maskieren" - dazu wird eben mit
%issue:<=^<%
eine Ersetzung vorgenommen - aus "<" würde "^<"; wenn's eh nicht vorkommt, ist das auch egal: wenn nix zu ersetzen ist, wird auch nix ersetzt ...
Fall 2:
set "issue="
löscht die Variable - neu gesetzt wird sie nur, wenn "ping" eine Zeile mit "Antwort" liefert, da ansonsten der "do"-Teil der "for"-Schleife ja gar nicht ausgeführt wird. Du kannst daher nach der Schleife prüfen, ob ein (neuer) Wert in der Variablen steht oder es sie gar nicht gibt (sie also "not defined" wäre). Bei Deiner ursprünglichen Version wird sie nie gelöscht, und egal, welches Ergebnis "ping" erbringt, hat sie nach der Schleife einen Wert - den neuen, oder den vom letzten Mal, als noch eine "Antwort"-Zeile zu verzeichnen war ...

Grüße
bastla