1

В оболочке Windows7 у меня есть следующий рабочий код для распечатки текущего IP-адреса:

@echo off
:: get ipv4
ipconfig | findstr IPv4 | findstr 172 > ipadd.txt

:: For statement to find the numbers
for /F "tokens=13" %%i in (ipadd.txt) do ( 
  echo %%i 
)
del ipadd.txt /Q

Однако я не хочу, чтобы IP-адрес был распечатан, а сохранен в переменной, как в следующем (неработающем) фрагменте кода:

@echo off
:: get ipv4
ipconfig | findstr IPv4 | findstr 172 > ipadd.txt

:: For statement to find the numbers
for /F "tokens=13" %%i in (ipadd.txt) do ( 
  set ip=%%i 
)
del ipadd.txt /Q

echo IP is $ip

Ожидаемый результат (пример)

IP 123.456.7.8

фактический результат

IP это $ ip

Как это исправить?

1 ответ1

3

Вы отметили свой вопрос как [bash]. Вы не пишете сценарий для bash или sh или чего-либо, даже удаленно похожего на оболочку Bourne. Пакетные сценарии Windows обычно выполняются в оболочке cmd.exe , являющейся потомком COMMAND.COM из MS-DOS, и имеют совершенно другой синтаксис.

В частности, %name% , а не $name , является синтаксисом переменных в пакетных сценариях Windows и MS-DOS.

echo IP is %ip%

Пока вы на это:

for /F "tokens=13" %%i in ('ipconfig | findstr IPv4 | findstr 172') do (

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .