Как мне получить IP-адрес в переменную пакетного файла? - PullRequest
43 голосов
/ 05 мая 2011

У меня странный вопрос, но я не уверен, что это возможно.

Я хотел бы написать скрипт, и, например, я собираюсь использовать ipconfig в качестве моей команды.

Теперь, когда вы обычно запускаете эту команду, у вас есть тонна вывода.

То, что я хотел бы иметь, это скрипт, который будет показывать только IP-адрес, например.

echo Network Connection Test
ipconfig <---This would run in the background
echo Your IP Address is: (INSERT IP ADDRESS HERE)

вывод будет

Network Connection Test

Your IP Address is: 192.168.1.1

Возможно ли это вообще?

Ответы [ 17 ]

1 голос
/ 05 мая 2011

Предполагая ОС Windows, как вы упоминаете, я p config

Если вы хотите установить некоторые утилиты Unixy, такие как windows-порт grep и cut, вы можете сделать это. Однако в таких случаях, как ваш пример с ipconfig, это может привести к путанице на машинах с несколькими сетевыми картами или, например, VMWare.

Возможно, вам нужен инструмент Powershell, посмотрите здесь .

1 голос
/ 28 февраля 2019

Однострочная команда в Windows для получения IP-адреса.

for /F "tokens=14" %%i in ('"ipconfig | findstr IPv4"') do SET LOCAL_IP=%%i

После этой команды echo %LOCAL_IP% напечатает IP-адрес. Или вы можете использовать %LOCAL_IP% в качестве ссылочной переменной в вашем пакетном скрипте

0 голосов
/ 14 ноября 2015

, если вы просто хотите, чтобы IP-адрес попробуйте это:

#Variable to store ip address
ipaddr=$(hostname -I)

echo "$ipaddr"
0 голосов
/ 21 марта 2013

Ниже сценарий будет хранить IP-адрес переменной ip_address

@echo off

call :get_ip_address
echo %ip_address%

goto :eof

REM
REM get the ip address
REM
:get_ip_address
FOR /f "tokens=1 delims=:" %%d IN ('ping %computername% -4 -n 1 ^| find /i "reply"') do (FOR /F "tokens=3 delims= " %%g IN ("%%d") DO set ip_address=%%g)

goto :eof

Идеи из этого сообщения в блоге .

0 голосов
/ 08 марта 2013

Следующее было сделано в cygwin на Windows XP.

Это даст вам ваш IP-адрес.Обратите внимание, что вокруг команды hostname есть обратные кавычки, а не одиночные кавычки.

ping -n 1 `hostname` | grep "Reply from " | cut -f 3 -d " " | cut -f 1 -d ":"

Это приведет к получению вашей подсети.

ping -n 1 `hostname` | grep "Reply from " | cut -f 3 -d " " | cut -f "1 2 3" -d "."

Далее будут перечислены все хосты в вашей локальной сети (введитеэто в сценарий под названием "Netmap").Я взял строку подсети выше и поместил ее в исполняемый файл «getsubnet», который я затем вызвал из следующего скрипта.

MINADDR=0
MAXADDR=255
SUBNET=`getsubnet`

hostcnt=0

echo Pinging all addresses in ${SUBNET}.${MINADDR}-${MAXADDR}

for i in `seq $MINADDR $MAXADDR`; do
addr=${SUBNET}.$i
ping -n 1 -w 0 $addr > /dev/null

if [ $? -ne 1 ]    
then    
echo $addr UP    
hostcnt=$((hostcnt+1))    
fi

done

echo Found $hostcnt hosts on subnet ${SUBNET}.${MINADDR}-${MAXADDR}
0 голосов
/ 07 июля 2019

Вы используете команду ipconfig, чтобы получить IPv4.

Справка Ссылка = for /?

Справка = ipconfig /?

Вот мой путь =

for /f "tokens=1-2 delims=:" %%a in ('ipconfig ^|find "IPv4"') do set Oo=%%b
Echo %Oo%
cd "%ProgramFiles%\Mozilla Firefox"
Firefox.exe %Oo%
0 голосов
/ 05 мая 2011

попробуйте что-то вроде этого

echo "yours ip addresses are:"
ifconfig | grep "inet addr" | cut -d':' -f2 | cut -d' ' -f1

Linux-подобные системы

...