一鍵批量ping任意ip段的存活主機


=======================by me=====================================

@echo off
echo.
color FC
for /f %%i in (pingip.txt) do (
ping -w 1200 -n 1 %%i|find /i "正在"
ping -w 1200 -n 2 %%i|find /i "TTL"
echo.
)
echo.&echo 感謝小明掃描完畢,隨便退出...&pause>nul

============================================================

一鍵批量ping任意ip段的存活主機

1、如果IP連續,例如(192.168.1.1-192.168.1.10):
@echo off&setlocal ENABLEDELAYEDEXPANSION
if exist onlist.txt
if exist offlist.txt
for /l %%i in (1,1,10) do (
ping -n 1 192.168.1.%%i>nul 2>nul
if !errorlevel!==0 (echo 192.168.1.%%i >>c:\bat\onlist.txt) else (echo 192.168.1.%%i >>c:\bat\offlist.txt)
)

2、如果IP不連續,那使用一個文件plist寫入要測試的地址列表,然后批處理:
@echo off&setlocal ENABLEDELAYEDEXPANSION
if exist c:\bat\onlist.txt del c:\bat\onlist.txt
if exist c:\bat\offlist.txt del c:\bat\offlist.txt
for /f %%i in (c:\bat\pclist.txt) do (
ping -n 1 %%i>nul 2>nul
if !errorlevel!==0 (echo %%i >>c:\bat\onlist.txt) else (echo %%i >>c:\bat\offlist.txt)
)


  今晚繼續我們的電腦批處理系列教程。如果想知道自己的小區寬帶或局域網,甚至外網任意某一ip段,目前有多少人同時在上網腫么辦呢?可能大家想到的一定是找工具什么的。其實不然,利用Windows內置的批處理功能完全可以實現批量ping查找指定網段存活主機的目的!

@echo off
color e
title 批處理掃網段主機
echo.
@for /f "tokens=1-4 delims=." %%i in (ip.txt) do (@for /l %%n in (1,1,255) do @ping -w 600 -n 1 %%i.%%j.%%k.%%n|find /i "ttl")
echo.&echo 掃描完畢,按任意鍵退出...&pause>nul

  復制以上代碼粘貼到記事本文檔里,然后另存為 批量ping.bat ,再新建一個空白的文本文檔,重命名為 ip.txt 。一切准備完事兒,就可以將你要批量掃描的ip段的地址放入ip.txt里(比如要掃自己對應的內網IP段就可以在ip.txt里輸入 192.168.1.1 后保存),然后雙擊一鍵運行 批量ping.bat 批處理腳本就可以看到返回的結果了。格式類似於:

Reply from 192.168.1.1: bytes=32 time=2ms TTL=64
Reply from 192.168.1.2: bytes=32 time=3ms TTL=64
Reply from 192.168.1.3: bytes=32 time=2ms TTL=64
Reply from 192.168.1.5: bytes=32 time=2ms TTL=64
Reply from 192.168.1.6: bytes=32 time=1ms TTL=64
……此處省略余下的所有可能的結果……

  下面我就來解讀一下介個看起來有點兒吃力的批處理命令吧。我們分拆來看一下,ping -w 600 -n 1 表示對指定ip地址ping一次,等待超時的時間為600毫秒;|find /i "ttl" 指的是僅顯示ping返回結果中帶“ttl”字符串的結果,也就是將指定網段內不存活的主機過濾掉了。而前面的 @for /f "tokens=1-4 delims=." %%i in (ip.txt) 意思是將“ip.txt”里的字符串(也就是我們要查找的ip段的地址)以“.”為界分割為四部分,分別賦予后面的變量 %%i、%%j、%%k 。最后剩下的 @for /l %%n in (1,1,255) 則表示從1開始循環+1遞增一直到255停止,然后賦予變量 %%n 。看不懂滴可以在cmd窗口里輸入 for /? 查看一下命令詳解吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM