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、MS-DOS の派生であるシェル上で実行されCOMMAND.COM、構文がまったく異なります。

特に、%name%、 ない$nameは、Windows および MS-DOS バッチ スクリプトの変数の構文です。

echo IP is %ip%

ついでに:

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

関連情報