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 (