extrai dados da saída no arquivo bat

2

Eu quero adicionar meu ip ao ambiente do sistema / usuário em um arquivo bat.

Este é o código do arquivo bat

curl http://httpbin.org/ip

Esta é a saída:

{
   "origin": "1.2.3.4"
}

Eu quero definir o ambiente set ip=1.2.3.4

Como devo fazer isso?

    
por Aminadav Glickshtein 15.01.2016 / 12:47

2 respostas

6

Eu quero adicionar meu endereço IP ao ambiente do sistema / usuário em um arquivo bat.

curl http://httpbin.org/ip

Esta é a saída:

{
   "origin": "1.2.3.4"
}

Use o seguinte arquivo de lote (test.cmd):

rem @echo off
setlocal enableDelayedExpansion
for /f "usebackq skip=1 tokens=2" %%i in ('curl http://httpbin.org/ip') do (
  setx ip %%~i
  goto :done
  )
:done
endlocal

Notas:

  • skip=1 é usado para pular a primeira linha { .
  • goto :done é usado para pular a última linha } .
  • ~ é usado para remover as aspas do endereço IP.

Leitura Adicional

  • Um índice A-Z da linha de comando do Windows CMD - Uma excelente referência para todas as coisas relacionadas à linha do Windows cmd.
  • para / f - Comando Loop contra os resultados de outro comando.
  • parâmetros - Um argumento de linha de comando (ou parâmetro) é qualquer valor passado para um script em lote.
  • setx - Defina as variáveis de ambiente permanentemente, SETX pode ser usado para definir as variáveis de ambiente para a máquina (HKLM) ou usuário atualmente conectado (HKCU).
por 15.01.2016 / 13:52
2

Isso seria o equivalente no PowerShell:

$ip = curl http://httpbin.org/ip | Select-String -Pattern "[0-9.]+" | Select Matches
Set ip $ip.Matches.Get(0).Value
    
por 15.01.2016 / 15:33