增强脚本ping批处理

Enhance script ping batch

我制作了一个测试公司本地网络的脚本。它有效,但不像我想要的那样。

如果正常,它会执行 1 次 ping 测试时间 (>=30ms)。所以它在我的循环中执行 2 ping。

我想要 1 ping if ok log only if >=30ms, if nok log.

如何增强此脚本?

set /p IP="Saisir une IP : "
:loop
ping.exe -n 1 %IP% | find "TTL" > NUL
if %errorlevel% == 0 for /f "tokens=7 delims==+<+ " %%i in ('ping.exe -n 1 %IP% ^| findstr /i /c:"temps"') do if %IP% GEQ 30 echo "%date% %time:~,8% ms=%%i" >> log_%IP%.txt
if %errorlevel% == 1 echo "%date% %time:~,8% Ne repond pas" >> log_%IP%.txt
timeout /t 1 > NUL
goto loop

谢谢

试试这个:

@echo off
set /p IP="Saisir une IP : "
:loop
for /f "tokens=6 delims==ms" %%a in ('ping.exe -n 1 %IP% ^| find "TTL"') do if %%a GEQ 30 echo "%date% %time:~,8% ms=%%a"
timeout /t 1 > NUL
goto:loop

您好,感谢您的帮助,但不幸的是它不起作用。

如果 Ping > 30 毫秒,则必须记录,例如:

Test Ping en cours vers 8.8.8.8 
Commencer le 29/06/2017, 16:02:26 

=============================== 
= NE PAS FERMER CETTE FENETRE = 
=============================== 

"29/06/2017 16:02:27 ms=70" 
"29/06/2017 16:02:28 ms=94" 

如果 ping KO,例如:

Test Ping en cours vers 192.192.192.192 
Commencer le 29/06/2017, 16:05:58 

=============================== 
= NE PAS FERMER CETTE FENETRE = 
=============================== 

"29/06/2017 16:06:02 Ne repond pas" 
"29/06/2017 16:06:06 Ne repond pas" 

如果 ping 正常,则日志中没有任何内容

致@Banee Ishaque K

当然可以,这是整个脚本

@echo off
set /p IP="Type an IP : "
cls
(echo Test Ping in progress to %IP%
echo Start at %date%, %time:~,8%
echo.
echo ============================
echo = DON T CLOSE THIS WINDOWS =
echo ============================
echo.) >> log_%IP%.txt | type log_%IP%.txt
:loop
ping.exe -n 1 %IP% | find "TTL" > NUL
if %errorlevel% == 0 for /f "tokens=7 delims==+<+ " %%i in ('ping.exe -n 1 %IP% ^| findstr /i /c:"time"') do if %IP% GEQ 30 echo "%date% %time:~,8% ms=%%i" >> log_%IP%.txt
if %errorlevel% == 1 echo "%date% %time:~,8% Not working" >> log_%IP%.txt
timeout /t 1 > NUL
goto loop

感谢大家的投稿,我自己回复。

这里是完整的脚本:

@echo off
:: Ce script permet de tester le réseau local d'un client

:: Déclaration de la variable IP, à saisir en exécutant le script
set /p IP="Saisir une IP : "
set /p MS="Valeur de test (en ms) : "

cls

:: Bloque de commentaire dans un fichier log et affichage à l'écran
(echo Test Ping en cours vers %IP%
echo Commencer le %date%, %time:~,8%
echo.
echo ===============================
echo = NE PAS FERMER CETTE FENETRE =
echo ===============================
echo.) >> log_%IP%.txt | type log_%IP%.txt

:: Boucle infini : commande ping avec 1 paquet
:: Si erreur le script log
:: Si pas d'erreur le script log les résultats supérieur ou égal à la valeur de test en ms
:: La boucle se relance toutes les secondes
:loop
for /f "tokens=1,7 delims==+<+ " %%a in ('ping.exe -n 1 %IP% ^| findstr /i /c:"temps"^|^| echo "Ne Repond Pas"') do (
 if "%%b" == "" (
  echo "%date% %time:~,8% Ne repond pas" >> log_%IP%.txt
 ) ELSE (
  if %%b GEQ %MS% (
   echo "%date% %time:~,8% ms=%%b" >> log_%IP%.txt
  )
 )
)
timeout /t 1 > NUL
goto loop