标题: [网络连接] 批处理如何获取局域网在线主机IP和主机名? [打印本页]
作者: TAO醉 时间: 2014-3-6 11:05 标题: 批处理如何获取局域网在线主机IP和主机名?
本帖最后由 pcl_test 于 2016-4-20 22:47 编辑
最好显示出列表形式,能够一一对应
例如:
主机名 ip
aaa 192.168.1.1
请高手指点。
在网上找到一段bat程序,代码如下:
如何修改能实现,我上述的要求啊,菜鸟求教- COLOR 0A
- CLS
- @ECHO Off
- Title 查询局域网内在线电脑IP
- :send
- @ECHO off&setlocal enabledelayedexpansion
-
- ECHO 正在获取本机的IP地址,请稍等...
- for /f "tokens=3 skip=2 delims=: " %%i in ('nbtstat -n') do (
- set "IP=%%i"
- set IP=!IP:~1,-1!
- ECHO 本机IP为:!IP!
- goto :next
- )
-
- :next
- for /f "delims=. tokens=1,2,3,4" %%i in ("%IP%") do set range=%%i.%%j.%%k
- ECHO.&ECHO 正在获取本网段内的其它在线计算机名,请稍等...
- ECHO 本网段【%range%.*】内的计算机有:
- for /f "delims=" %%i in ('net view') do (
- set "var=%%i"
- ::查询在线计算机名称
- if "!var:~0,2!"=="\\" (
- set "var=!var:~2!"
- ECHO !var!
- ping -n 1 !var!>nul
- ))
- ECHO.
- ECHO 正在获取本网段内的其它在线计算机IP,请稍等...
- for /f "skip=3 tokens=1,* delims= " %%i in ('arp -a') do ECHO IP: %%i 正在使用
-
- ECHO.
- ECHO 查询完毕,按任意键退出...
- pause>nul
复制代码
作者: Batcher 时间: 2014-3-6 13:31
你用这个代码得到的结果是什么样子的?
作者: TAO醉 时间: 2014-3-6 18:09
回复 2# Batcher
现在的代码执行的效果如下:
本网段【%range%.*】内的计算机有:
aaa-pc
bbb-pc
ccc-pc
正在获取本网段内的其它在线计算机IP,请稍等...
192.168.1.1
192.168.1.2
192.168.1.3
注意:
这里的主机名和IP不是一一对应的,主机名按照字母排序,IP按照int值排序。比如,bbb-pc的IP可能就是192.168.1.3。
作者: TAO醉 时间: 2014-3-6 18:11
回复 2# Batcher
我想实现的是,想让主机名和IP一一对应起来。
比如:
主机名 IP
aaa-pc 192.168.1.2
bbb-pc 192.168.1.3
ccc-pc 192.168.1.1
作者: gm8800 时间: 2016-4-20 15:33
好像不行,我的网段是192.168.0-192.168.3,查询出来的在线的192.168.2.#只有几个,但是其实我局域网内192.168.2.#有很多很多在线的
作者: ygqiang 时间: 2016-4-20 21:17
回复 4# TAO醉 - @echo off
- setlocal enabledelayedexpansion
- set "aa= "
-
- cls
-
- ———————————————————————————————————————————————————————————————
- cls
- for /f "tokens=15 delims= " %%i in ('ipconfig ^| find /i "IP Address"') do (
- set fsip=%%i
- )
- echo %fsip%
-
- for /f "tokens=1,2,3 delims=." %%i in ("%fsip%") do (
- set a=%%i.%%j.%%k
- )
-
- echo %a%
-
- set Gateway=%a%.1
-
- ———————————————————————————————————————————————————————————————
- cls
-
- del /f /q 当前在线计算机名-ip.txt >nul 2>nul
-
- for /l %%m in (2,1,100) do (
- ping.exe %a%.%%m -n 1 -w 300 >nul&&Call :getname %a%.%%m
- )
-
-
- ———————————————————————————————————————————————————————————————
-
-
- start "" "当前在线计算机名-ip.txt"
- exit
-
-
-
- ———————————————————————————————————————————————————————————————
- cls
-
- :getname
- set iip=%1
- set nname=
- for /f "delims=" %%i in ('nbtstat -a !iip! ^| find /i "<00> UNIQUE"') do (
- echo %%i
- set tii=%%i
- for /f "tokens=1 delims=< " %%j in ("!tii!") do echo %%j!aa!!iip!>>当前在线计算机名-ip.txt
- goto :aa
- )
- for /f "delims=" %%j in ('nbtstat -a !iip! ^| find /i "Host not found"') do (
- echo %%j
- echo !iip!>>当前在线计算机名-ip.txt
- )
- :aa
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |