我正在尝试编写一个批处理脚本来获取活动 NIC(可能是无线或本地)的本地 IP 地址。为了获取 IP 地址,我使用了以下行:
FOR /F "delims=[] tokens=2" %%a in ('ping -4 %computername% -n 1 ^| findstr "["') do (set thisip=%%a)
然后我得到了 IP 地址。范围取决于第二组(例如 172.64.10.10 中的 64)。如果本地 IP 地址在第二组中处于 64 - 127 范围内,我想启动一个脚本。
我怎样才能做到这一点?
我已经尝试导出第二组中的值,但是我必须导出两个或三个字符:
SET IP=%thisip:~3,2%
然后我设法循环遍历这些数字,但是我错了,我不想多次运行脚本,并且我的循环会根据 IP 地址运行多次:
:MyLoop
IF "%IP%" LSS "64" GOTO EndLoop
IF "%IP%" GTR "99" GOTO EndLoop
ECHO %IP%
SET /A IP+=1
GOTO MyLoop
:EndLoop
答案1
这是您需要的代码,全部包含在一个批处理文件中。
@echo off
setlocal EnableDelayedExpansion
set "thisIP="
set /a SecondGroup=0
set /a RangeStart=64
set /a RangeEnd=127
for /f "delims=[] tokens=2" %%A in ('ping -4 %computername% -n 1 ^| findstr "["') do (set thisIP=%%A)
for /f "delims=. tokens=1,2,3,4" %%A in ("!thisIP!") do set /a SecondGroup=%%B
if !SecondGroup! GEQ !RangeStart! (
if !SecondGroup! LEQ !RangeEnd! (
echo Let's execute you code here.
) else (
echo IP is too high.
)
) else (
echo IP is too low.
)
setlocal DisableDelayedExpansion
endlocal
ECHO
如果不需要命令,请记得删除它们。我插入它们只是为了澄清目的。