批处理中的特殊字符问题

批处理中的特殊字符问题

问题描述:

我无法解决的一个问题。批处理中的特殊字符问题

在我的/ 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结果是< 1ms时,它会登录该文件。当ping = 1ms或= 2ms时......它可以很好地工作。

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

Ping 8.8.8.8:日志文件是完美的,因为没有在结果

Ping 127.0.0.1<:在文件中的脚本日志

感谢

+0

您将需要向我们展示了一些典型的输出线是“工作”或“不工作”,因为你显然不是使用英文(因此'ping'输出格式可能稍有不同)。我只是''将你的代码编辑为标准格式 - 我不知道'^ |^| echo ...'是什么 - 请解释一下。你是否在问题条件中使用'echo'显示'%% a'和'%% b'? – Magoo

+0

@oasisck你在这里做什么来确定ping是否成功是可怕的。阅读[这个答案](https://stackoverflow.com/a/46707214/3074564)与批处理代码非常类似的任务,使用'ping'的退出代码进行记录和详细解释此代码的工作原理。 – Mofi

+0

什么是%MS%'设置为?由于' aschipfl

感谢所有

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

平安结果是slighlty不同的,当结果是更高<1ms或类似=33 ms

注意的空间。

我刚刚适应我的

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 (

代码和它的作品