【发布时间】:2017-10-19 13:47:15
【问题描述】:
一个我无法解决的问题。
在我的 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结果
我尝试在< 之前使用转义字符^,但这不起作用。
例如
Ping 8.8.8.8 :日志文件完美,因为结果中没有<
Ping 127.0.0.1 : 脚本登录文件
谢谢
【问题讨论】:
-
您需要向我们展示一些“有效”或“无效”的典型输出行,因为您显然没有使用英语(因此
ping输出格式可能略有不同)。我只是将您的代码edited 为标准格式-我不知道^|^|echo...是关于什么的-请解释一下。您是否使用echo显示了%%a和%%b用于问题条件? -
@oasisck 您在此处确定 ping 是否成功的做法很糟糕。阅读带有批处理代码的this answer 与您的任务非常相似,使用退出代码
ping进行日志记录并详细解释此代码的工作原理。 -
%MS%设置为什么?由于<是分隔符,所以不能出现在%%a或%%b中;因此问题一定出在其他地方......
标签: batch-file for-loop special-characters ping