背景
開發人員常常需要使用windows系統管理衆多的Linux服務器。就本人而言,因偶爾更換辦公地點,導致路由器每次爲Linux主機分配的IP不盡相同。因而,需要探測主機局域網內所有設備IP。
代碼
COLOR 0A
CLS
@ECHO Off
Title 查詢局域網內在線電腦IP
@ECHO off
setlocal enabledelayedexpansion
ECHO 正在獲取本機的IP地址,請稍等...
for /f "delims=: tokens=2" %%i in ('ipconfig ^| find /i "IPv4"') do set ip=%%i
echo %ip%
for /f "delims=. tokens=1,2,3,4" %%i in ("%IP%") do set range=%%i.%%j.%%k
ECHO.&ECHO 正在獲取本網段內的其它在線計算機名,請稍等...
ECHO 本網段【%range%.*】內的計算機有:
for /f "delims=" %%i in ('net view') do (
set "var=%%i"
::查詢在線計算機名稱
if "!var:~0,2!"=="\\" (
set "var=!var:~2!"
ECHO !var!
::發送一個ping報文
ping -n 1 !var!>nul
)
)
ECHO.
ECHO 正在獲取本網段內的其它在線計算機IP,請稍等...
for /f "skip=3 tokens=1,* delims= " %%i in ('arp -a') do ECHO IP: %%i 正在使用
ECHO.
ECHO 查詢完畢,按任意鍵退出...
pause>nul
代碼解釋
- color命令設置控制檯前景/背景色:背景黑色、前景綠色;
- title命令設置控制檯標題;
- setlocal enabledelayedexpansion開啓了變量延時綁定;
- 第一個for循環用於獲取本機IPv4地址,注意for循環中使用管道符號需要轉義:^|;
- 第二個for循環用於獲取本機網段;
- 第三個for循環對net view命令的結果進行處理,對檢測出來的所有主機發送一個ping報文,以便形成arp記錄;
- 查看arp地址解析表;
結果
總結
- 通過for循環獲取命令的結果,使用單引號包含命令;
- 通過for循環處理字符串,需要使用雙引號。
- net view命令和arp命令的使用;
- BAT字符串處理--字符串截取、替換等;