Batch verifica se o IP está dentro da faixa específica

2

Estou tentando fazer um script em lote para obter o endereço IP local da NIC ativa (pode ser sem fio ou local). Para obter o endereço IP, usei a seguinte linha:

FOR /F "delims=[] tokens=2" %%a in ('ping -4 %computername% -n 1 ^| findstr "["') do (set thisip=%%a)

Eu então tenho o endereço IP. O intervalo depende do segundo grupo (por exemplo, 64 em 172.64.10.10). Gostaria de lançar um script se o endereço IP local estiver entre 64 e 127 no segundo grupo.

Como posso fazer isso?


Eu já tentei exportar o valor no segundo grupo, mas devo exportar dois ou três caracteres:

SET IP=%thisip:~3,2%

Depois, consegui percorrer os números, mas estou pensando errado. Não quero executar o script mais de uma vez e meu loop é executado várias vezes, dependendo do endereço IP:

:MyLoop
IF "%IP%" LSS "64" GOTO EndLoop
IF "%IP%" GTR "99" GOTO EndLoop
ECHO %IP%
SET /A IP+=1
GOTO MyLoop
:EndLoop
    
por Markus Sacramento 15.10.2014 / 15:32

1 resposta

0

Aqui está o código que você precisa, tudo em um arquivo de lote.

@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

Lembre-se de remover os comandos ECHO se você não precisar deles. Eu os inseri apenas para fins de esclarecimento.

    
por 02.09.2018 / 12:34