Batch file 批处理脚本文件获取默认网关和ping ip地址
我正在尝试获取默认网关并自动ping以下ip地址192.168.1.(1-254),然后将活动或非活动ip地址保存到文本文件中 根据该代码,它将扫描默认网关,用户必须手动插入ip地址 例如: 我试图做的是扫描默认网关并将其转换为一个变量,这样它就可以是+1/扫描默认网关并自动启动循环+1 不插入IP地址就可以得到这样的东西吗 (在其他网络中测试时,默认网关可能不同(例如10.1.180.0),因此尝试不将其设置为静态并启动循环)Batch file 批处理脚本文件获取默认网关和ping ip地址,batch-file,command-line-interface,command-prompt,ip-address,Batch File,Command Line Interface,Command Prompt,Ip Address,我正在尝试获取默认网关并自动ping以下ip地址192.168.1.(1-254),然后将活动或非活动ip地址保存到文本文件中 根据该代码,它将扫描默认网关,用户必须手动插入ip地址 例如: 我试图做的是扫描默认网关并将其转换为一个变量,这样它就可以是+1/扫描默认网关并自动启动循环+1 不插入IP地址就可以得到这样的东西吗 (在其他网络中测试时,默认网关可能不同(例如10.1.180.0),因此尝试不将其设置为静态并启动循环) 这样可以自动获取网关,然后ping范围1到254吗?鉴于您同时拥
这样可以自动获取网关,然后ping范围1到254吗?鉴于您同时拥有
IPv4
和IPv6
网关,我们使用wmic
:
@echo off
type nul >up.txt
type nul >down.txt
for /f "tokens=2,3 delims={,}" %%a in ('"wmic nicconfig where IPEnabled="True" get DefaultIPGateway /value | find "I" "') do (
for /f "tokens=1-3 delims=^." %%i in ("%%~a") do (
for /l %%l in (1,1,254) do (
ping -4 -w 1000 -n 1 %%i.%%j.%%k.%%l | findstr "bytes=32"
if errorlevel 1 (echo %%i.%%j.%%k.%%l DOWN >> DOWN.txt) else (echo %%i.%%j.%%k.%%l ACTIVE >> ACTIVE.txt)
)
)
)
我在ping命令中使用findstr
来搜索bytes=32
,因为这是唯一真正表明它得到了回复的指示器。原因是,如果您接收到目标主机不可访问
,它仍然会导致0的数据包丢失,并且字节-32仅存在于主机的实际回复中
小费!!根据您的网络质量和PC在Lan/Wan上的距离,以及路由器和交换机的繁忙程度,我建议改为增加到
-w 1500
。当前,如果设备处于活动状态且响应时间超过1000毫秒,则会将其发送到DOWN.txt文件。原因是ICMP
是一种诊断协议,并且没有获得优先级。一个设备可能距离1跳远,但如果它非常忙于处理优先级通信,它将丢弃您的ICMP数据包,或导致大量响应延迟。那么您想ping网关及其范围内的所有地址吗?是的,并在cmd默认网关上显示该过程:192.168.2.0 ping 192.168.1.0。。。。。
@echo off
for /f "tokens=2,3 delims={,}" %%a in ('"WMIC NICConfig where IPEnabled="True" get DefaultIPGateway /value | find "I" "') do echo Default IP Gateway : %%~a
SET count=0
SET /p subnet=Please enter IP address range (for example, 192.168.0) :
:start
SET /a count=%count%+1
ECHO.Trying %subnet%.%count% & ECHO.
ping -n 1 -w 1000 %subnet%.%count% >nul
IF %errorlevel%==0 echo %subnet%.%count% ACTIVE >> ACTIVE.txt
IF %errorlevel%==1 echo %subnet%.%count% DOWN >> DOWN.txt
IF %count%==254 goto :eof
GOTO start
@echo off
type nul >up.txt
type nul >down.txt
for /f "tokens=2,3 delims={,}" %%a in ('"wmic nicconfig where IPEnabled="True" get DefaultIPGateway /value | find "I" "') do (
for /f "tokens=1-3 delims=^." %%i in ("%%~a") do (
for /l %%l in (1,1,254) do (
ping -4 -w 1000 -n 1 %%i.%%j.%%k.%%l | findstr "bytes=32"
if errorlevel 1 (echo %%i.%%j.%%k.%%l DOWN >> DOWN.txt) else (echo %%i.%%j.%%k.%%l ACTIVE >> ACTIVE.txt)
)
)
)