[Batch] batファイルで指定したIPアドレスを正規表現マッチングする方法

はじめに

自身が操作する端末のIPアドレスを取得し、ある範囲内にマッチするかどうかを確認したい場合のサンプルプログラムです。

C#やJava、PHPなどではよくサンプルなどを見かけますが、そういった言語を利用できない場合にbatファイルでも対応できるサンプルとなります。

今回やりたいこと

  • 端末のIPアドレスをipconfigを使って取得する
  • ファイルに定義した範囲リストを読み込む
  • 範囲リストにマッチするかどうかをチェックする

サンプルプログラム

iplist.txt

192.168.10.[1-9][0-9]*
192.168.20.[1-9]
192.168.20.[1-9][0-9]
192.168.20.1[0-1][0-9]
192.168.20.12[0-7] 

ipcheck.bat

setlocal enabledelayedexpansion
REM IPアドレスを取得する
for /f “delims=: tokens=2” %%a in (‘ipconofig ^| finest “IPv4”’) do (
  set IP_TMP=%%a
  set IP_ADDR=!IP_TMP:~1!
)
REM ファイルで定義した範囲リストを読み込みチェックする
for /f “tokens=1,2 delims==” %%f in (ipcheck.txt) do (
  set REGEX_IP=%%f
  echo !IP_ADDR! | findstr /R “^REGEX_IP$” > nul
  if ERRORLEVEL 0 (
    echo true
    goto :END
  )
)
:END
exit /b 0
endlocal

iplist.txtファイルを一行ずつ読み込み、IPアドレスとマッチした場合はtrueを標準出力で出力します。

最後に

今回は自身の端末のIPアドレスを対象としましたが、引数に指定したIPアドレスをチェックするなど、いろんな用途で利用できるかと思いますので、是非参考までに

タイトルとURLをコピーしました