Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批处理脚本文件获取默认网关和ping ip地址_Batch File_Command Line Interface_Command Prompt_Ip Address - Fatal编程技术网

Batch file 批处理脚本文件获取默认网关和ping ip地址

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以下ip地址192.168.1.(1-254),然后将活动或非活动ip地址保存到文本文件中

根据该代码,它将扫描默认网关,用户必须手动插入ip地址

例如:

我试图做的是扫描默认网关并将其转换为一个变量,这样它就可以是+1/扫描默认网关并自动启动循环+1

不插入IP地址就可以得到这样的东西吗

(在其他网络中测试时,默认网关可能不同(例如10.1.180.0),因此尝试不将其设置为静态并启动循环)


这样可以自动获取网关,然后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)
  )
 )
)