4

По сути, мне нужно получить шлюз по умолчанию на машине с Win7, который я выполнил с помощью приведенного ниже кода:

@echo off
for /f "skip=1 delims={}, " %%A in ('wmic nicconfig get defaultIPgateway') do for /f "tokens=1" %%B in ("%%~A") do set "IP=%%~B"
echo %IP%

Проблема в том, что мне нужно сделать, это потянуть последнюю часть (поэтому из 10.10.10.1 , мне нужно 1 , проверьте, что это 1 , 65 , 83 или 192), добавьте к нему число, а затем восстановите его до полного IP - например 10.10.10.2

Я застрял в разделительной части ...

У меня есть:

FOR /F "DELIMS=. TOKENS=4" %a IN %%IP%% DO ECHO %d

Что я делаю неправильно?

Помощь будет принята с благодарностью.

Спасибо,

1 ответ1

1

Как получить последний октет из IP-адреса шлюза по умолчанию?

Используйте следующий пакетный файл:

@echo off
setlocal
setlocal enabledelayedexpansion
rem throw away everything except the ip address line 
for /f "usebackq" %%a in (`wmic nicconfig get defaultIPgateway ^| findstr "{"`) do (
  rem we have for example {"192.168.42.129"}
  rem split on " and get 2nd token
  for /f delims^=^"^ tokens^=2 %%b in ('echo %%a') do (
     rem we have 192.168.42.129
     rem split on . and get 4 tokens (octets)
    for /f "tokens=1-4 delims=." %%c in ("%%b") do (
      rem we have 129
      set _o1=%%c
      set _o2=%%d
      set _o3=%%e
      set _o4=%%f
      )
    )
  )
echo %_o4%
endlocal

Дальнейшее чтение

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .