0
我無法解決的一個問題。批處理中的特殊字符問題
在我的/ 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<
:在文件中的腳本日誌
感謝
您將需要向我們展示了一些典型的輸出線是「工作」或「不工作」,因爲你顯然不是使用英文(因此'ping'輸出格式可能稍有不同)。我只是''將你的代碼編輯爲標準格式 - 我不知道'^ |^| echo ...'是什麼 - 請解釋一下。你是否在問題條件中使用'echo'顯示'%% a'和'%% b'? – Magoo
@oasisck你在這裏做什麼來確定ping是否成功是可怕的。閱讀[這個答案](https://stackoverflow.com/a/46707214/3074564)與批處理代碼非常類似的任務,使用'ping'的退出代碼進行記錄和詳細解釋此代碼的工作原理。 – Mofi
什麼是%MS%'設置爲?由於'<'是分隔符,因此不能出現在'%% a'或'%% b';因此問題必須在其他地方... – aschipfl