Arquivo em lote - dividindo um caminho de entrada padrão em suas partes componentes, adicionando um número e então reconstituindo

4

Basicamente, o que eu preciso fazer é obter o gateway padrão de uma máquina Win7 que realizei com o código abaixo:

@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%

O problema é, o que eu preciso fazer é puxar a última parte (assim, de 10.10.10.1 , preciso do 1 , verifique se é 1 , 65 , 83 ou 192 ) adicione um número a ele e reconstitua-o de volta para um IP completo - por exemplo. 10.10.10.2

Estou preso na parte da separação ...

Eu tenho:

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

O que estou fazendo de errado?

A ajuda seria muito apreciada.

Obrigado,

    
por Toby MacDonnell 27.11.2015 / 15:42

1 resposta

1

Como faço para obter o último octeto do endereço IP do gateway padrão?

Use o seguinte arquivo em lotes:

@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

Leitura Adicional

por 27.11.2015 / 17:04

Tags