我試圖驗證傳遞給批處理檔案的 IP 地址引數是否有效。 不幸的是,Windows findstr不能可靠地作業,盡管輸入的重碼是匹配的。
以下是所有結果的摘要。
findstr在有匹配的情況下將errorlevel設定為0,在沒有匹配的情況下設定為1.
。C:iSTEPVMTicketingRealVNC>echo 192.10.10.10 | findstr /R "[0-2][0-9][0-9].[0-2][0-9][0-9].
C:iSTEPVMTicketingRealVNC>echo %errorlevel%。
1
C:iSTEPVMTicketingRealVNC>echo 192.101.101.101 | findstr /R "[0-2][0-9][0-9]. [0-2][0-9][0-9]. [0-2][0-9] [0-9]"
192.101.101.101
C:iSTEPVMTicketingRealVNC>echo %errorlevel%
0
C:iSTEPVMTicketingRealVNC>echo 1.1.1.1 | findstr /R "[0-2][0-9][0-9]?.[0-2]?[0-9][0-9]?.[0-2]?
C:iSTEPVMTicketingRealVNC>echo 1.1.1.1 | findstr /R "[0-2]? [0-9][0-9]?.[0-2]? [0-9][0-9]?.[0-2]?
C:iSTEPVMTicketingRealVNC>echo 1.1.1.1 | findstr /R "d{1,3}.d{1,3}.d{1,3}"
C:iSTEPVMTicketingRealVNC>echo %errorlevel%。
1
C:iSTEPVMTicketingRealVNC>echo 1.1.1.1 | findstr /b /e /R "d{1,3}.d{1,3}.d{1,3}.d{1,3}"
C:iSTEPVMTicketingRealVNC>echo %errorlevel%。
1
C:iSTEPVMTicketingRealVNC>echo 1.1.1.1 | findstr /b /e /R "d{1,3}.d{1,3}.d{1,3}.d{1,3}"
C:iSTEPVMTicketingRealVNC>echo %errorlevel%。
1
C:iSTEPVMTicketingRealVNC>echo 1.1.1.1 | findstr /b /e /R "d{1,3}.d{1,3}.d{1,3}.d{1,3}"
C:iSTEPVMTicketingRealVNC>echo %errorlevel%。
1
C:iSTEPVMTicketingRealVNC>echo 1.1.1.1 | findstr /b /e /R "*d{1,3}.d{1,3}.d{1,3}.d{1,3}*"
FINDSTR:沒有搜索字串
C:iSTEPVMTicketingRealVNC>echo 1.1.1.1 | findstr /b /e /R "*d{1,3}.d{1,3}.d{1,3}.d{1,3}"
FINDSTR:沒有搜索字串
C:iSTEPVMTicketingRealVNC>echo 1.1.1.1 | findstr /b /e /R "d{1,3}.d{1,3}.d{1,3}.d{1,3}*"
C:iSTEPVMTicketingRealVNC>echo %errorlevel%。
1
C:iSTEPVMTicketingRealVNC>echo 1.1.1.1 | findstr /b /e /R "d{1,3}.d{1,3}.d{1,3}.d{1,3}>"
C:iSTEPVMTicketingRealVNC>echo %errorlevel%。
1
uj5u.com熱心網友回復:
使用powerhell regex進行匹配的簡單方法:
@Echo off
呼叫 :Regex "131.21.1.101"/span> "d{1,3}.d{1,3}.d{1,3}"
Echo(%Errorlevel%)
呼叫 :Regex "1321.101"/span> "d{1,3}.d{1,3}.d{1,3}"
Echo(%Errorlevel%)
Goto :Eof
:Regex
powershell.exe -noprofile -c "'%~1' -match '%~2'" | findstr /l "True" > nul || Exit /b 1
Exit /b 0
關于powershell regex語法的詳細資訊,見這里
uj5u.com熱心網友回復:
我剛剛嘗試了下面的方法:
echo 1.1.1.1 | findstr "[0-9]*. [0-9]*. [0-9]*. [0-9]*"
看起來作業正常,但還有其他問題,比如說像isolationlayer_31bf3856ad364e35_10.0.14393.479_none_3b8c這樣的奇怪值也被顯示出來。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/315747.html
標籤:
