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


2

ipconfigの出力からIPv4 IPアドレスを抽出する方法

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

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


あなたがリンクした質問は、あなたに必要なすべての情報をどのように提供しないのですか?コメントで返信しないでください。質問をより明確で完全になるように編集してください。
Gマン

@ G-Man明らかに、他の質問に対する私の答えは、それがどのように解決されるかについての手がかりを与えますが、OPが望む出力を提供するために微調整する必要があります。ほとんどのユーザーは、これらの変更を行うためのバッチプログラミングに関する知識が不十分です。私は彼の質問に答えると信じているOPに答えを提供しました。
DavidPostill

@ G-Manバッチファイルはかなり上手ですが、ドット付きクワッドIPアドレスに一致するようにfindstrに正規表現を追加する方法を考える必要がありました。
DavidPostill

@DavidPostill:しかし、私のポイントは、あなたがする必要はなかったということです。「先行スペースの検索IPv4/分割:/先行スペースの除去」アプローチが機能します。また、モデレーターは常に「同じコミュニティ内の2つの別々の質問に実質的に同じ回答を投稿している場合は、停止し、代わりに重複としてフラグを立てる」ことをユーザーに非難していませんか?
Gマン

@ G-Manいいえ、そうではありません。この方法では、最初のドット付きクワッドアドレス(文字列IP4を含む行)のみが検出されます。実際に私の答えを読むのが面倒な場合は、3つのIPアドレスのリストが抽出されます。2番目の点については、ここでの私の答えは、他の答えは大きく異なります。
DavidPostill

回答:


2

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

0

上のビルの質問への答え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

リストによって報告されたすべてのインターフェイスのIPv4アドレスをipconfig

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.