2017-10-19 149 views
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<:在文件中的腳本日誌

感謝

+0

您將需要向我們展示了一些典型的輸出線是「工作」或「不工作」,因爲你顯然不是使用英文(因此'ping'輸出格式可能稍有不同)。我只是''將你的代碼編輯爲標準格式 - 我不知道'^ |^| echo ...'是什麼 - 請解釋一下。你是否在問題條件中使用'echo'顯示'%% a'和'%% b'? – Magoo

+0

@oasisck你在這裏做什麼來確定ping是否成功是可怕的。閱讀[這個答案](https://stackoverflow.com/a/46707214/3074564)與批處理代碼非常類似的任務,使用'ping'的退出代碼進行記錄和詳細解釋此代碼的工作原理。 – Mofi

+0

什麼是%MS%'設置爲?由於'<'是分隔符,因此不能出現在'%% a'或'%% b';因此問題必須在其他地方... – aschipfl

回答

0

感謝所有

我發現我的問題,並且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 (

代碼和它的作品