Как мне установить переменную в командной строке Windows на IP? - PullRequest
2 голосов
/ 28 сентября 2011

Есть ли простой способ получить IP-адрес от моего поставщика услуг и поместить его в переменную через командную строку?Примерно так:

SET hostIP = nslookup \address
ECHO %hostIP%

Или

SET hostIP = ipconfig \address
ECHO %hostIP%

Ответы [ 4 ]

2 голосов
/ 02 ноября 2012

Ответ Аруна хороший, но я обнаружил, что использование NSLOOKUP генерирует мошенническую запятую после имени хоста, когда более одного IP назначено / связано с данным хостом.

Однако я нашел другой способ, который разрешает (сначала назначенный) IP-адрес с заданным именем хоста и не генерирует мошенническую запятую - он использует PING. Очень быстро, очень надежно.

for /f "tokens=2 delims=[]" %f in ('ping -4 -n 1 %COMPUTERNAME% ^| find /i "pinging"') do echo IP=%f

Генерирует простой IPv4-адрес для имени хоста в переменную IP. Если вы затем сделаете ECHO% IP%, он покажет вам IP как: IP = 192.168.1.2

Конечно, в пакетных сценариях вам нужно будет заменить один% f на %% f. Обратите внимание на знак в каратах ("^") перед символом канала ("|"), который требуется в пакетных сценариях, чтобы они не интерпретировали канал, а вместо этого направляет результаты оператора ping в оператор find.

1 голос
/ 29 сентября 2011
for /f "skip=1 tokens=2 delims=: " %f in ('nslookup %COMPUTERNAME% ^| find /i "Address"') do echo %f
0 голосов
/ 04 февраля 2014

Попробуйте пакет, подобный этому, чтобы установить переменные окружения:

ipconfig > ipconfig.out
setx IPADDR /f ipconfig.out /a 7,13
setx IPADDR /f ipconfig.out /a 7,14
setx IPMASK /f ipconfig.out /a 8,14

Выйдите из командной строки и откройте новую. Используйте SET и найдите IPADDR и IPMASK, которые теперь являются постоянными. Чтобы обновить переменные, вам нужно будет повторно запустить пакет и выйти из командной строки. Различные показанные координаты учитывают различия в выводе IPCONFIG для Windows 2003 по сравнению с Windows 2008 (должны работать в XP / 7 таким же образом). Записывается только найденное значение, поэтому неудачная строка не вредит, если ничего не найдено. Добавьте шлюз с помощью:

setx IPGATE /f ipconfig.out /a 9,12
0 голосов
/ 28 сентября 2011

Если бы вы могли использовать bash (как в cygwin), это легко было бы сделать с помощью обратных тиков для выполнения всего, что вы хотите в строке SET hostIP.

Как и в

export hostIP = `curl 'http://whatsmyip.net' | grep '<title' | awk '{print $8}' | sed -e 's:<.*::g'`
...