web-dev-qa-db-ja.com

ipconfigの出力からIPv4IPアドレスを抽出し、それをフィルタリングして、出力にIPアドレスのリストのみが含まれるようにするにはどうすればよいですか?

ipconfigの出力からIPv4 IPアドレスを抽出するにはどうすればよいですか

私はこの投稿を読みました、そしてそれは非常に役に立ちました。 IPアドレス(xxx.xxx.xxx.xxx)のみを抽出できる方法かどうか疑問に思っていました。メモ帳を使用してすべてを検索/すべて置換することを考えることができる最善の方法。

コマンドラインから使用できる方法はありますか?

2
Hassan Daudzai

Ipconfigの出力からIP4アドレスのリストのみを抽出するにはどうすればよいですか?

次のバッチファイル(test.cmd)を使用します。

@echo off
setlocal
setlocal enabledelayedexpansion
for /f "usebackq tokens=2 delims=:" %%a in (`ipconfig ^| findstr /r "[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*"`) do (
  set _temp=%%a
  rem remove leading space
  set _ipaddress=!_temp:~1!
  echo !_ipaddress!
  )
endlocal

使用例と出力:

> ipconfig | findstr /r "[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*"
   IPv4 Address. . . . . . . . . . . : 192.168.42.78
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 192.168.42.129

> test
192.168.42.78
255.255.255.0
192.168.42.129

参考文献

  • Windows CMDコマンドラインのA-Zインデックス -Windowsコマンドラインに関連するすべてのものの優れたリファレンス。
  • enabledelayedexpansion -遅延拡張により、変数は解析時ではなく実行時に拡張されます。
  • / fの場合 -別のコマンドの結果に対してコマンドをループします。
  • ipconfig -IPを構成します(インターネットプロトコル構成)
  • set --CMD環境変数を表示、設定、または削除します。 SETで行われた変更は、現在のCMDセッションの間のみ保持されます。
  • setlocal -バッチファイル内の環境変数の可視性を制御するオプションを設定します。
  • 変数 -変数(部分文字列)の一部を抽出します。
2
DavidPostill

構築 リンクした質問に対するDavidPostillの回答

@echo off
setlocal
setlocal enabledelayedexpansion
rem throw away everything except the IPv4 address line 
for /f "usebackq tokens=*" %%a in (`ipconfig ^| findstr IPv4`) do (
  rem we have for example "IPv4 Address. . . . . . . . . . . : 192.168.42.78"
  rem split on ':' and get 2nd token
  for /f delims^=^:^ tokens^=2 %%b in ('echo %%a') do (
    rem we have " 192.168.42.78"
    rem split on '.' and get 4 tokens (octets)
    for /f "tokens=1-4 delims=." %%c in ("%%b") do (
      set _o1=%%c
      set _o2=%%d
      set _o3=%%e
      set _o4=%%f
      rem strip leading space from first octet
      set _4octet=!_o1:~1!.!_o2!.!_o3!.!_o4!
      echo !_4octet!
      )
    )
  )
endlocal

willlistipconfigによって報告されたすべてのインターフェースのIPv4アドレス。