批處理查看同一子網(wǎng)絡(luò)下的所有IP在線情況
本文的批處理可以讓您知道自己所在局域網(wǎng)的同一網(wǎng)段下都有哪些IP被使用了。不得不承認(rèn),我在創(chuàng)造這個(gè)批處理的時(shí)候想法很奇怪,甚至有些愚蠢。
:::::::查看所有子網(wǎng)IP.bat::::::: @echo off title 查看所有子網(wǎng)IP set /a Online=0 set /a Offline=0 set /a Total=256 set ExportFile=子網(wǎng)IP在線統(tǒng)計(jì).txt :: 初始化在線IP與不在線IP的個(gè)數(shù)為零,共掃描256個(gè)IP,結(jié)果輸出的文件名 set StartTime=%time% :: 記錄程序的開(kāi)始時(shí)間 for /f "delims=: tokens=2" %%i in ('ipconfig /all ^| find /i "IP Address"') do set IP=%%i :: 獲得本機(jī)IP [注1] if "%IP%"=="" echo 未連接到網(wǎng)絡(luò) & pause & goto :EOF if "%IP%"==" 0.0.0.0" echo 未連接到網(wǎng)絡(luò) & pause & goto :EOF :: 當(dāng)IP為空或 0.0.0.0 時(shí),提示未連接并退出該程序 for /f "delims=. tokens=1,2,3,4" %%i in ("%IP%") do ( set /a IP1=%%i set /a IP2=%%j set /a IP3=%%k set /a IP4=%%l ) :: 以句點(diǎn)為分隔符,分別將IP的四個(gè)十進(jìn)制數(shù)賦給四個(gè)變量 set /a IP4=0 echo 在線的IP:>%ExportFile% :: 初始化IP的第四個(gè)數(shù)值為零,并創(chuàng)建結(jié)果輸出文件 :RETRY ping %IP1%.%IP2%.%IP3%.%IP4% -n 1 -w 200 -l 16>nul && set /a Online+=1 && echo %IP1%.%IP2%.%IP3%.%IP4%>>%ExportFile% || set /a Offline+=1 :: ping 目標(biāo)IP [注2] set /p =[將本文底部評(píng)論4中的退格符替換到此處]set /a Scanned=%Online%+%Offline% set /a Progress=(%Online%+%Offline%)*100/%Total% set /p =正在掃描:%Scanned%/%Total% 掃描進(jìn)度:%Progress%%%:: 刪除當(dāng)前行的內(nèi)容,并重新顯示進(jìn)度信息 [注3] set /a IP4+=1 if %IP4% lss %Total% goto :RETRY :: 當(dāng)IP的第四個(gè)數(shù)值小于總數(shù)時(shí),跳轉(zhuǎn)回 :RETRY 處,重復(fù)執(zhí)行直到全部 ping 完為止 echo. echo. set EndTime=%time% :: 記錄程序的結(jié)束時(shí)間 set /a Seconds = %EndTime:~6,2% - %StartTime:~6,2% set /a Minutes = %EndTime:~3,2% - %StartTime:~3,2% if %Seconds% lss 0 set /a Seconds += 60 & set /a Minutes -= 1 if %Minutes% lss 0 set /a Minutes += 60 :: 計(jì)算時(shí)間差 set /a Percent=%Online%*100/(%Online%+%Offline%) :: 計(jì)算在線百分比 echo 在線IP個(gè)數(shù): %Online% echo 不在線IP個(gè)數(shù): %Offline% echo 在線百分比: %Percent%%% echo 統(tǒng)計(jì)耗時(shí): %Minutes%分%Seconds%秒 echo 統(tǒng)計(jì)日期: %date% %time:~0,-3% echo.>>%ExportFile% echo 在線IP個(gè)數(shù): %Online%>>%ExportFile% echo 不在線IP個(gè)數(shù): %Offline%>>%ExportFile% echo 在線百分比: %Percent%%%>>%ExportFile% echo 統(tǒng)計(jì)耗時(shí): %Minutes%分%Seconds%秒>>%ExportFile% echo 統(tǒng)計(jì)日期: %date% %time:~0,-3%>>%ExportFile% echo 記錄已保存到文件"%ExportFile%"中 ::顯示結(jié)果并將結(jié)果保存到文件中 pause ::::::::::::::::::::::::::::::::
注1. ipconfig 是內(nèi)置于 Windows 的 TCP/IP 應(yīng)用程序,用于顯示本地計(jì)算機(jī)網(wǎng)絡(luò)適配器的物理地址和IP地址等配制信息,這些信息一般用來(lái)檢驗(yàn)手動(dòng)配置的 TCP/IP 設(shè)置是否正確。當(dāng)在網(wǎng)絡(luò)中使用 DHCP 服務(wù)時(shí), ipconfig 可以檢測(cè)到計(jì)算機(jī)中分配到了什么IP地址,是否配置正確,并且可以釋放,重新獲取IP地址。這些信息對(duì)于網(wǎng)絡(luò)測(cè)試和故障排除都有重要的作用。[3]
更詳細(xì)的說(shuō)明請(qǐng)參閱 ipconfig/? 。ipconfig /all ,參數(shù) /all 表示查看詳細(xì)的網(wǎng)絡(luò)配置。命令 ipconfig /all ^| find /i "IP Address" 表示在 'ipconfig /all 的結(jié)果中,以 "IP Address" 為查找對(duì)象,進(jìn)行搜索(其結(jié)果類似于:IP Address. . . . . . . . . . . . : 10.30.11.51 )。
而整條命令中的 for 語(yǔ)句,則表示在上述結(jié)果中,以冒號(hào)為間隔(delims=:),查找第2個(gè)字串(tokens=2)。很明顯,所找到的結(jié)果就是自己電腦當(dāng)前的IP地址了(如果您只有一快網(wǎng)卡或是只啟用了一個(gè)網(wǎng)卡的話。顯然,對(duì)于多個(gè)網(wǎng)卡會(huì)顯示出多個(gè)IP的情況,我并沒(méi)有考慮的太全面)。[關(guān)于 for 更詳細(xì)請(qǐng)參閱 4.2.4 小節(jié)]
另外,注意到在 ipconfig /all ^| find /i "IP Address" 中有一個(gè)轉(zhuǎn)義字符 ^ ,它的作用是讓后面的管道命令 | 生效,而不是讓程序把 | 誤解為 for 語(yǔ)句里參數(shù)的一部分。
注2. ping 其實(shí)才是本批處理的核心部分。命令 ping 的主要作用是通過(guò)發(fā)送數(shù)據(jù)包并接收應(yīng)答信息來(lái)檢測(cè)兩臺(tái)計(jì)算機(jī)之間的網(wǎng)絡(luò)是否連通。比如我可以輸入 ping 10.30.11.35 以便查看我是否能與我所在的局域網(wǎng)中IP為 10.30.11.35 的機(jī)器連通。如果我不懂批處理的話,也許我就得從 IP 10.30.11.1 開(kāi)始,挨個(gè)地 ping 到 IP 10.30.11.255 ,才能達(dá)到我在本小節(jié)的最初目的。
在批處理中 ping 的3個(gè)參數(shù) -n 1 -w 200 -l 16 分別表示:僅 ping 一遍[-n 1],等待200毫秒后按超時(shí)考慮[-w 200],發(fā)送16字節(jié)的數(shù)據(jù)[-l 16]。
另外,此命令行中同時(shí)用到了兩個(gè) && 和一個(gè) || 的組合命令,我不得不承認(rèn)這種復(fù)雜的邏輯關(guān)系會(huì)給您帶來(lái)閱讀上的困難。
注3. 這里使用了 set /p =顯示內(nèi)容
本文的使用程度并不大,卻很有趣,至少并沒(méi)有想象中的那么愚蠢。
上一篇:批處理實(shí)現(xiàn)過(guò)濾重復(fù)行
欄 目:DOS/BAT
下一篇:批處理實(shí)現(xiàn)亂雨紛飛(黑客帝國(guó)特效)
本文標(biāo)題:批處理查看同一子網(wǎng)絡(luò)下的所有IP在線情況
本文地址:http://mengdiqiu.com.cn/a1/DOS_BAT/10087.html
您可能感興趣的文章
- 01-10DOS下查看硬盤分區(qū)該使用什么命令
- 01-10使用批處理實(shí)現(xiàn)軟件的自動(dòng)安裝以安裝搜狗拼音為例
- 01-10通過(guò)批處理修改DNS的代碼(推薦)
- 01-10windows使用批處理發(fā)布web到tomcat并啟動(dòng)tomcat腳本分享
- 01-10再談DOS批處理下格式化日期字符串的三種方法(詳解)
- 01-10用批處理一鍵安裝兩種擴(kuò)展名的Windows系統(tǒng)補(bǔ)丁
- 01-10ip地址切換批處理腳本分享
- 01-10批處理?xiàng)钶x三角效果實(shí)現(xiàn)代碼
- 01-10將批處理文件注冊(cè)成服務(wù)在系統(tǒng)啟動(dòng)的時(shí)候自動(dòng)調(diào)用
- 01-10批處理輸出n階幻方腳本


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹(shù)的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-10DOS下查看硬盤分區(qū)該使用什么命令
- 01-10使用批處理實(shí)現(xiàn)軟件的自動(dòng)安裝以安
- 01-10后臺(tái)運(yùn)行bat定時(shí)器程序示例分享
- 01-10通過(guò)批處理修改DNS的代碼(推薦)
- 01-10dota2服務(wù)器ping測(cè)試腳本分享
- 01-10再談DOS批處理下格式化日期字符串的
- 01-10windows使用批處理發(fā)布web到tomcat并啟動(dòng)
- 01-10win7怎么設(shè)定關(guān)閉顯示器時(shí)間
- 01-10屏蔽up鍵禁止游戲運(yùn)行腳本分享
- 01-10win7創(chuàng)建wifi熱點(diǎn)腳本分享
隨機(jī)閱讀
- 01-11Mac OSX 打開(kāi)原生自帶讀寫(xiě)NTFS功能(圖文
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 04-02jquery與jsp,用jquery
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10delphi制作wav文件的方法
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置
- 01-10C#中split用法實(shí)例總結(jié)
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改