批处理中出现特殊字符问题

时间:2017-10-19 13:47:15

标签: batch-file for-loop special-characters ping

我无法解决的一个问题。

在我的for / f delims参数中,我有一个特殊字符<,我的脚本没有注意到它。

此脚本测试网络以满足IT需求。它记录断开网络和速度。

set /p IP="IP : "
set /p MS="Millisecond : "
for /f "tokens=1,7 delims==< " %%a in ('ping.exe -w 1000 -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

当ping结果为&lt; 1ms,它登录文件。当ping = 1ms或= 2ms时......它可以正常工作。

我在^之前尝试使用转义字符<,但这不起作用。

E.g

Ping 8.8.8.8:日志文件很完美,因为结果中没有<

Ping 127.0.0.1:脚本登录文件

由于

1 个答案:

答案 0 :(得分:0)

全部谢谢

我发现了我的问题,而且F *** Windows ......

如果结果为<1ms或更高,如=33 ms

,ping的结果会略有不同

注意空格。

我只是用

调整我的代码
for /f "tokens=1,8 delims=m=^< " %%a in ('ping.exe -w 1000 -n 1 %IP% ^| findstr /i /c:"temps"^|^| echo "Ne Repond Pas"') do (

它有效