multitarget-ping.bat

「作ってくれ」と言われて作ったところ、GUIで操作できるフリーソフトを見つけたから必要なくなったと言われてしまった。
眠らせておくのももったいないので公開します。

概要

指定した範囲に存在しないIPのリストを出力するバッチファイル。
/24~/32までの範囲のアドレスにpingを順次飛ばし、各IPアドレスの応答を列挙します。
また、pingの応答結果をカレントディレクトリの"result.log"に出力します。

書式

multitarget-ping.bat NETWORK SCOPE_START SCOPE_END

  • NETWORK: 指定するIPv4アドレスの範囲の第3オクテットまでを指定する。最後にドットを付ける必要がある
  • SCOPE_START: 範囲の最小値となるIPv4アドレスの第4オクテットを指定する
  • SCOPE_END: 範囲の最大値となるIPv4アドレスの第4オクテットを指定する

動作環境

Windows XP Professional SP3にて作成・動作確認しています。

使用例

C:\>multitarget-ping.bat 192.168.1. 1 255
192.168.1.1: Reply
192.168.1.2: Reply
192.168.1.3: Unreachable
192.168.1.4: Unreachable
192.168.1.5: Unreachable
192.168.1.6: Unreachable
(中略)
192.168.1.254: Unreachable
192.168.1.255: Unreachable

ライセンス

WYFPL - Do What The Fuck You Want To Public Licenseの元公開します。

つまり、

コピーだろうが配布だろうが改変だろうが、もう好きにしてくれ。ライセンスが気に入らなきゃ別のライセンスに変えてくれ。

それほど間違っていないプログラマ用語辞典

ということです。

プログラム

@echo off
set network=%1%
set scopeStart=%2%
set scopeEnd=%3%
set /a i=%scopeStart%

:LOOP
	set targetIP=%network%%i%
	ping -w 1 -n 1 %targetIP% >> result.log
	if not errorlevel 1 goto success
	if errorlevel 1 goto error

	:success
	echo %targetIP%: Reply
	goto next
	:error
	echo %targetIP%: Unreachable
	goto next

	:next
	if "%i%"=="%scopeEnd%" goto exit
	set /a i=i+1
goto LOOP

:exit

参考