dwj0 发表于 2018-8-21 11:11:38

写了一个可以自动Ping多个IP地址的批处理文件,分享给大家

功能: 自动Ping一个网段中指定的IP区域,或Ping一个存放有IP地址的文件中的IP,并将离线的设备记录到文件
@echo off
set err_file=C:\离线设备.txt

:Menu
Cls
@ ECHO.
@ ECHO.           ※Ping方式选项※
@ ECHO.
@ ECHO. ┏*━*━*━*━*━━☆━━*━*━*━*━*┓
@ ECHO. ┃                                    ┃
@ ECHO. ┃       使用网段方式 → 输入1      ┃
@ ECHO. ┃                                    ┃
@ ECHO. ┃    * * ** * *    ┃
@ ECHO. ┃                                    ┃
@ ECHO. ┃       使用文件方式 → 输入2      ┃
@ ECHO. ┃                                    ┃
@ ECHO. ┗*━*━*━*━*━━☆━━*━*━*━*━*┛
@ ECHO.
set /p choice=    请输入对应的数字按执行,默认1:
If /I "%Choice%"=="1" Goto Online
If /I "%Choice%"==""Goto Online
If /I "%Choice%"=="2" Goto Local
@ ECHO.
ECHO    选择无效,请重新输入
ping -n 2 127.1>nul
goto menu


:Online
@echo.
@echo.
set /p NetWork=    请输入网段前3位(默认:192.168.1):
set /p StartIP=    请输入开始IP:
set /p EndIP=      请输入结束IP:
If /I "%NetWork%"==""set NetWork=192.168.1
cls
@echo.
@echo.开始 Ping IP 地址从 %NetWork%.%StartIP% 到 %NetWork%.%EndIP%,结果保存到 %err_file%
echo %date% %time% >>%err_file%
echo Ping IP 地址从 %NetWork%.%StartIP% 到 %NetWork%.%EndIP%,以下是不在线的设备地址:>>%err_file%
for /L %%a in (%StartIP%,1,%EndIP%) do call :PingHost %NetWork%.%%a
echo. >>%err_file%
goto End


:Local
@echo.
@echo.
set /p IPFile=    请输入存放IP的文件名:
cls
@echo.
@echo.开始 Ping IP文件:%IPFile%,结果保存到 %err_file%
echo %date% %time% >>%err_file%
echo Ping IP文件:%IPFile%,以下是不在线的设备地址:>>%err_file%
for /f %%i in (%IPFile%) do call :PingHost %%i
echo. >>%err_file%
goto End

:PingHost
@echo Ping %1
ping %1 -n 1 | find "TTL" || echo %1 设备不在线>>%err_file%
goto:eof

:End



IP文件格式举例:
192.168.1.2
www.163.com
www.sina.com
8.8.8.8

SealedGhost 发表于 2018-10-18 20:16:57

nmap    arp

pter 发表于 2018-10-18 20:32:20

这个不错,保存一下。

sun_sky 发表于 2018-10-18 22:36:49

学习真的不错
推荐个小工具,netmonitor,共享软件,已经用了十多年了、

locky_z 发表于 2018-10-18 22:54:08

现在windows自带防火墙都不响应ping,为准确起见,还是ping完再用arp -a看一下才是最准确。
页: [1]
查看完整版本: 写了一个可以自动Ping多个IP地址的批处理文件,分享给大家