今天写这个有一个原因,就是我家的网络用了一个无线电力猫做为无线网络扩展,但忘记了无线电力猫的IP,而且我家新路由器也看不到这个电力猫,也可能有一个原因。我原来用的是192.168.1.1的华为路由器,自然我就把这个无线电力猫设置成了192.168.1.X这样的IP,这几天我家换了普联的479路由器,IP段为192.168.0.X,所以在这里面“应该”是无法访问192.168.1.X设备的。但是事无绝对,原来的192.168.1.X的路由器接到这个新路由上以后,是可以正常上网的,只是接在华为路由下面的设备的IP段为192.168.1.X,上网什么的完全不耽误。而且那个电力猫接到这个479路由上以后,接到它下面的设备也可以直接上网,毫不影响,只不过不能登录到无线路由上去。技术真是进步的飞快,之前还属于要学习的技术,现在完全傻瓜式管理,倒是方便了普通用户,PNP当然是大家最需要的。
闲话说完!
其实只要把这个无线电力猫接到旧路由上,看一下应该就可以找得到,而且我之前明确记得华为路由上曾经看到过它,但今天我接到华为路由上以后,居然看不到有线设备。而且那个电力猫被东西挡住了,取不下来,就只能想办法PING它,得到IP后,再登进去,修改IP地址为192.168.0.X段,但是要找到它的IP可不容易。一个个ping?254个IP,可以是够烦的,于是又想起了DOS命令这个老而不衰的家伙,一定可以解决。
上面还是闲话,下面是干货。
DOS命令连续ping一个IP段:
for 命令语法:FOR %variable IN (set) DO command [command-parameters]
实例:for /L %D in (1,1,255) do ping 192.168.0.%D -n 1
解释:
for /L的作用是以增量形式从开始到结束生成一个数字序列。语法格式:
FOR /L %variable IN (start,step,end) DO command [command-parameters]
-
start:创建序列的开始位置;
-
step:创建序列时单步距离;
-
end:创建序列结束位置;
在上面代码中就是从1开始到255,步进为1,挺好理解。
%D为变量,后面的D可以为任何字母单词,但前后要一致,而且大小写敏感,在上例中代表循环的1-255的数字。
for语句中in和do是必须有的,不多说,照抄就行了。
do后面就是要执行的命令,此后为ping一个IP。
-n 1为ping命令参数,表示ping一次。
所以for /L %D in (1,1,255) do ping 192.168.0.%D -n 1运行后如下图:
其实这样很乱,ping不通的对我来说没用,而且这样也不好看。于是后面加了一个过虑,命令变成这样了:
for /L %D in (1,1,255) do ping 192.168.0.%D -n 1 | find "TTL=">nul && echo 192.168.0.%D通
ping前面那个“|”是管道符,表示前面的结果作为后面命令的输入(相关|、 ||、 &、 &&用法见:dos命令连接符图文教程,符号&和&&和||组合语句,bat批处理脚本 - 哔哩哔哩)
find “TTL=”>nul表示在前面ping的结果里面找“TTL=”,找到结果为1,找不到为0,所以>nul即为找到。 &&表示前面命令执行成功则执行后面的命令,不成功不执行。这样执行后的画面就简单多了:
但还是有很多无用 的干扰信息,所以在执行上面的命令之前用echo off就解决了。
如图:
这样就只剩下我们需要的内容了。但执行完后不要忘记再echo on,不然只有一个光标在那闪,了不知道命令执行完了没。所以上面完全的命令为:
echo off
for /L %D in (1,1,255) do ping 192.168.0.%D -n 1 | find "TTL=">nul && echo 192.168.0.%D OK!
命令执行完成后再:echo on.
如何把上面的命令做成批处理是这样,如下代码,%D前面要加一个%,批处理和DOS命令的变量写法不同,其它一样。
@echo off
clsfor /L %%D in (1,1,255) do ping 192.168.0.%%D -n 1 | find "TTL=">nul && echo 192.168.0.%%D OK! @echo on
如果输入到文件可改成:(DOS命令)
for /L %D in (1,1,255) do ping 192.168.0.%D -n 1 | find "TTL=">nul && echo 192.168.0.%D>>ok.txt
丰俭由人,自行选择。