Abarbeitung von pings in Batchdatei als Prozentanzeige visualisieren
Hallo zusammen,
wie der Titel schon andeutet geht es darum in einer Batchdatei eine Prozentanzeige einzubauen.
Die Prozentanzeige soll wie folgt eingebaut werden:
- Über eine Batchdatei wird eine IP-Adresse angegeben und die auszuführenden ping's zu der Adresse. Somit hat man schonmal den Wert der 100% entspricht. -> Anzahl der Pings.
- Bei dem ausführen der Pings werden diese nicht in cmd angezeigt, sondern in eine Textdatei geschrieben.
- Nun soll aber eine Prozentanzeige in cmd angezeigt werden, wie viel Prozent der Ping's schon ausgeführt wurden.
- Bei der Anzahl der Pings kann nicht "0" oder "garnichts" eingegeben werden, da sonst ja keine Prozentanzeige möglich wäre.
- In der Textdatei muss auf jedenfall eine Statistik der Pings enthalten sein.
Hier hab ich schonmal die Batchdatei von mir OHNE die Prozentanzeige:
Ich hatte Google schon durchsucht aber nur folgende (etwas) hilfreiche Threads gefunden, die mich aber leider nicht weiter gebracht haben.
Batchdatei Kopieren Prozente anzeigen
Fortschrittanzeige bei batch bzw batchkopiervorgang
ping -t in Batchdatei anhalten
Wäre ganz nett wenn sich der User "Biber", der in den anderen Beiträgen schöne Beispiele gegeben hatte, hier auch etwas gutes im Petto hätte
Hoffe auf einige gute Antworten
Mfg, FireEmerald
wie der Titel schon andeutet geht es darum in einer Batchdatei eine Prozentanzeige einzubauen.
Die Prozentanzeige soll wie folgt eingebaut werden:
- Über eine Batchdatei wird eine IP-Adresse angegeben und die auszuführenden ping's zu der Adresse. Somit hat man schonmal den Wert der 100% entspricht. -> Anzahl der Pings.
- Bei dem ausführen der Pings werden diese nicht in cmd angezeigt, sondern in eine Textdatei geschrieben.
- Nun soll aber eine Prozentanzeige in cmd angezeigt werden, wie viel Prozent der Ping's schon ausgeführt wurden.
- Bei der Anzahl der Pings kann nicht "0" oder "garnichts" eingegeben werden, da sonst ja keine Prozentanzeige möglich wäre.
- In der Textdatei muss auf jedenfall eine Statistik der Pings enthalten sein.
Hier hab ich schonmal die Batchdatei von mir OHNE die Prozentanzeige:
@ECHO off
ECHO.
ECHO Please enter the IP-address: ( XXX.XXX.XXX.XXX )
ECHO.
SET /p ip=:
ECHO.
ECHO.
ECHO Please enter the number of ping's:
ECHO.
set /p Anzahl_n=:
IF /i "%Anzahl_n%"=="" GOTO error
IF /i "%Anzahl_n%"=="0" GOTO error
ECHO.
ECHO.
ECHO in progress... this can take a few minutes...
ECHO _______________________________________________
ECHO.
ECHO IP-address: %ip%
ECHO ping's: %Anzahl_n%
ECHO.
ECHO initialization: %date% : %time%
> ECHO already finished: ANZEIGE IN % oder 1 von XX (wenn nicht anderster möglich)
ECHO _______________________________________________
PING -n %Anzahl_n% %ip% > ping_%date%.txt
ECHO.
ECHO Successfully executed !
PAUSE
EXIT
:error
cls
ECHO.
ECHO Entered IP-address: %ip%
ECHO.
ECHO Your entry was incorrect !,
ECHO please enter a value between 1 and 4294967295 for ping's:
ECHO.
set /p Anzahl_n=:
IF /i "%Anzahl_n%"=="" GOTO error
IF /i "%Anzahl_n%"=="0" GOTO error
ECHO.
ECHO.
ECHO in progress... this can take a few minutes...
ECHO _______________________________________________
ECHO.
ECHO IP-address: %ip%
ECHO ping's: %Anzahl_n%
ECHO.
ECHO initialization: %date% : %time%
> ECHO already finished: ANZEIGE IN % oder 1 von XX (wenn nicht anderster möglich)
ECHO _______________________________________________
PING -n %Anzahl_n% %ip% > ping_%date%.txt
ECHO.
ECHO Successfully executed !
PAUSE
EXIT
Ich hatte Google schon durchsucht aber nur folgende (etwas) hilfreiche Threads gefunden, die mich aber leider nicht weiter gebracht haben.
Batchdatei Kopieren Prozente anzeigen
Fortschrittanzeige bei batch bzw batchkopiervorgang
ping -t in Batchdatei anhalten
Wäre ganz nett wenn sich der User "Biber", der in den anderen Beiträgen schöne Beispiele gegeben hatte, hier auch etwas gutes im Petto hätte
Hoffe auf einige gute Antworten
Mfg, FireEmerald
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 175250
Url: https://administrator.de/contentid/175250
Ausgedruckt am: 26.11.2024 um 01:11 Uhr
15 Kommentare
Neuester Kommentar
Hallo FireEmerald und willkommen im Forum!
Nun bin ich leider nicht Biber, daher nur einige Hinweise:
Grüße
bastla
Nun bin ich leider nicht Biber, daher nur einige Hinweise:
- Um während des Pingens den Fortschritt anzeigen zu können, könntest Du eine Schleife verwenden und jeweils nur ein einzelnes Paket abschicken ("
ping -n 1
") ...
- Die Fehlerbehandlung ist suboptimal und vor allem ist es sinnlos, in "
:error
" praktisch den gleichen Programmteil wie oben zu verwenden - da könntest Du gleich oben eine passende Schleife einsetzen.
- "
exit
" ohne "/b
" ist oft sinnlos (und stört zusätzlich beim Testen) - "goto :eof
" tut's zumeist auch ...
- Während der "few minutes" könntest Du (in Bezug auf Deine Zeilen 8, 19, 36 und 47) mal hier vorbeischauen ...
Grüße
bastla
Aloha,
hm, ob du dich mit einer Abarbeitung mit einzelnen pings zufrieden geben willst?
zugegeben: suboptimal, denn einzelne Pakete können auch mal im Nirvana landen
Aber mir würde momentan nichts schöneres einfallen.
greetz André
P.S.: too late batch wollte nicht Mathe wie ich wollte ... bei ihm ist alles < 0 = 0 ergo war alles 0 ...
hm, ob du dich mit einer Abarbeitung mit einzelnen pings zufrieden geben willst?
setlocal enabledelayedexpansion
set /p cnt=
for /L %%s in (1,1,%cnt%) do (
set /a perc=%%s*100/%cnt%*100/100
echo already finished !perc!%%
PING -n 1 %ip% >>ping_%date%.txt
)
zugegeben: suboptimal, denn einzelne Pakete können auch mal im Nirvana landen
Aber mir würde momentan nichts schöneres einfallen.
greetz André
P.S.: too late batch wollte nicht Mathe wie ich wollte ... bei ihm ist alles < 0 = 0 ergo war alles 0 ...
Aloha,
man kann ja auch mit
oder so ... da lässt sich vieles realisieren
greetz André
man kann ja auch mit
findstr
rumspielen und eine sich addierende Variable machen set /a "good=0"
for ... do (
...
ping administrator.de -n 1 |findstr /c:"Empfangen = 1" && set /a "good+=1"
)
echo Gesendete Pakete: %cnt% - Empfangene Pakete: %good%
oder so ... da lässt sich vieles realisieren
greetz André
Hallo FireEmerald!
BTW: Du verwendest doch zumindest XP?
Grüße
bastla
P.S.: Der Hinweis (und Link) oben bezog sich auf "Ping's" ...
[Edit] Überzähliges "r" bei "%EmpfPct%" und "%VerlPct%" entfernt [/Edit]
keiner würde bei über 100 Pings jeden Pingeintrag in der Textdatei durchschauen und zählen erfolgreich, nicht erfolgreich, erfolgreich, nicht erfolgreich... xD
Ein (ungetesteter) Batch schon:...
PING -n 1 %ip% >nul 2>nul && (set /a Empf+=1) || (set /a Verl+=1)
)
set /a EmpfPct=Empf*100/cnt
set /a VerlPct=Verl*100/cnt
>>ping_%date%.txt echo %cnt% Pakete: %Empf% (= %EmpfPct% %%) empfangen, %Verl% (= %VerlPct% %%) verloren
Grüße
bastla
P.S.: Der Hinweis (und Link) oben bezog sich auf "Ping's" ...
[Edit] Überzähliges "r" bei "%EmpfPct%" und "%VerlPct%" entfernt [/Edit]
Hallo FireEmerald!
Wenn Du auf Deine Variablennamen (konkret: %Anzahl_n%) bestehst, dann aber auch konsequent die Variable "cnt" dadurch ersetzen ...
Grüße
bastla
Wenn Du auf Deine Variablennamen (konkret: %Anzahl_n%) bestehst, dann aber auch konsequent die Variable "cnt" dadurch ersetzen ...
Diesen Filterbefehl ">nul 2>nul" verstehe ich allerdings immer nochnicht genau.
Hat ja auch niemand behauptet, dass das ein Filter wäre - es handelt sich hier um eine Ausgabeumleitung ins "Nichts" - deshalb wird auch keine Ausgabe der einzelnen "ping
"-Befehle angezeigt.Grüße
bastla
Moin Feuerstein,
willkommen im Forum auch von mir.
Ich vesuch mal bastla ein wenig zu entlasten - der hat mit dir heute ja schon eine komplette Schicht verbracht.
Zu deiner letzten offenen Frage im Vor-Kommentar:
Der Satz ...
ist zwar im Sinne von Konrad Duden und Bastian Sick vorbildlich, aber die Aussage darin wird klarer im etwas optisch entzerrten Nochmal-Lesen.
willkommen im Forum auch von mir.
Ich vesuch mal bastla ein wenig zu entlasten - der hat mit dir heute ja schon eine komplette Schicht verbracht.
Zu deiner letzten offenen Frage im Vor-Kommentar:
Der Satz ...
--> anders formuliert:
--> Alles nach einem "&&" wird nur bei Erfolg des vorangegangenen Befehls ausgeführt.
--> Aber prüfen und auswerten kannst du den ERRORLEVEL-Wert 0 = ERFOLG bzw ERRORLEVEL ungleich 0 = GRÜTZE
Grüße
Biber