Как назначить переменную в оболочке Windows?

Как назначить переменную в оболочке Windows?

В оболочке 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

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

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

echo IP is %ip%

Пока вы этим заняты:

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

Связанный контент