windows bat系列12:獲取主機局域網所有設備

背景

         開發人員常常需要使用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

代碼解釋

  1. color命令設置控制檯前景/背景色:背景黑色、前景綠色;
  2. title命令設置控制檯標題;
  3. setlocal enabledelayedexpansion開啓了變量延時綁定
  4. 第一個for循環用於獲取本機IPv4地址,注意for循環中使用管道符號需要轉義:^|
  5. 第二個for循環用於獲取本機網段;
  6. 第三個for循環對net view命令的結果進行處理,對檢測出來的所有主機發送一個ping報文,以便形成arp記錄
  7. 查看arp地址解析表;

結果

總結

  1. 通過for循環獲取命令的結果,使用單引號包含命令
  2. 通過for循環處理字符串,需要使用雙引號
  3. net view命令和arp命令的使用;
  4. BAT字符串處理--字符串截取、替換等;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章