How do I get the IP address into a batch-file variable?

В Linux это %llu, и в Windows это %I64u

, Хотя я нашел, что это не работает в Windows 2000, там, кажется, существует ошибка!

46
задан indiv 11 May 2011 в 19:15
поделиться

1 ответ

tldr;

я не смог, используют любой из вышеупомянутых ответов в моем варианте использования, таким образом, я использовал следующую команду, чтобы получить IP-адрес моего адаптера сети Ethernet и повторить его, как упомянуто в вышеупомянутом вопросе.

for /f "tokens=3 delims=: " %i  in ('netsh interface ip show config name^="Ethernet" ^| findstr "IP Address"') do echo Your IP Address is: %i

Для тех, кому любопытно знать, что весь, который означает, читайте на [1 123]

, Большинство команд с помощью ipconfig, например, просто распечатывает все IP-адреса, и мне был нужен определенный, который в моем случае был для моего адаптера сети Ethernet.

Вы видите свой список сетевых адаптеров при помощи эти netsh interface ipv4 show interfaces команда. Большинству людей нужны Wi-Fi или Ethernet.

Вы будете видеть таблицу как так в выводе к командной строке:

Idx     Met         MTU          State                Name
---  ----------  ----------  ------------  ---------------------------
  1          75  4294967295  connected     Loopback Pseudo-Interface 1
 15          25        1500  connected     Ethernet
 17        5000        1500  connected     vEthernet (Default Switch)
 32          15        1500  connected     vEthernet (DockerNAT)

В столбце имени необходимо найти сетевой адаптер, который Вы хотите (т.е. Ethernet, Wi-Fi и т.д.).

, Как упомянуто, я интересовался Ethernet в моем случае.

Для получения IP для того адаптера мы можем использовать команду netsh:

netsh interface ip show config name="Ethernet"

Это дает нам этот вывод:

Configuration for interface "Ethernet"
    DHCP enabled:                         Yes
    IP Address:                           169.252.27.59
    Subnet Prefix:                        169.252.0.0/16 (mask 255.255.0.0)
    InterfaceMetric:                      25
    DNS servers configured through DHCP:  None
    Register with which suffix:           Primary only
    WINS servers configured through DHCP: None

(я фальсифицировал фактический IP-адрес выше из соображений безопасности 🠘 ‰)

я могу далее указать, какую строку я хочу использовать эти findstr команда в командной строке MS-DOS. Здесь я хочу строку, содержащую строку IP Address.

netsh interface ip show config name="Ethernet" | findstr "IP Address"

Это дает следующий вывод:

 IP Address:                           169.252.27.59

я могу затем использовать эти for команда, которая позволяет мне анализировать файлы (или многострочные строки в этом случае) и разделять содержание строк на основе разделителя и номера изделия, которым я интересуюсь.

Примечание, что я ищу третий объект (tokens=3) и что я использую пробел и : как мои разделители (delims=:).

for /f "tokens=3 delims=: " %i  in ('netsh interface ip show config name^="Ethernet" ^| findstr "IP Address"') do echo Your IP Address is: %i

Каждое значение или маркер в цикле печатаются прочь как переменная %i, но я только интересуюсь третьим "маркером" или объектом (следовательно tokens=3). Обратите внимание, что я должен был выйти | и = использование ^

В конце эти for команда, которую можно указать команду для выполнения с содержанием, которое возвращается. В этом случае я использую echo для распечатывания его с некоторым другим текстом, но Вы могли также присвоить значение переменной среды с [1 121], например, или что когда-либо Вы любите.

Крутой, ха?

, Если у Вас есть какие-либо идеи для улучшения, оставьте комментарий. Я хотел бы услышать его :) Или Вы могли просто отредактировать.

0
ответ дан 26 November 2019 в 20:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: