标题: [网络工具] 批处理版局域网空闲IP查询 [打印本页]
作者: youxi01 时间: 2008-1-7 22:11 标题: 批处理版局域网空闲IP查询
- ::原理介绍:先通过net view命令获取局域网的所有计算机
- ::(无法查询没有安装netbios协议的计算机);再ping这些计算机(ping不通也没关系)
- ::然后查arp缓存。
- ::code by youxi01@bbs.bathome.net 2008-1-7
- @echo off &setlocal enabledelayedexpansion
- title 局域网空闲IP查询@bbs.bathome.net
- Rem '/*========获取本机的IP地址(局域网)=========*/
- echo 正在获取本机的IP地址,请稍等...
- for /f "tokens=3 skip=2 delims=: " %%i in ('nbtstat -n') do (
- set "IP_addr=%%i"
- set IP_addr=!IP_addr:~1,-1!
- echo 本机IP为:!IP_addr!
- goto :next
- )
-
- :next
- for /f "delims=. tokens=1,2,3,4" %%i in ("%IP_addr%") do set IP_fd=%%i.%%j.%%k
- Rem '/*========获取计算机名============*/
- echo.&echo 正在获取局域网内计算机名,请稍等...
- echo 处于网段 %IP_fd%.* 的计算机有:&echo.
- for /f "delims=" %%i in ('net view') do (
- set "var=%%i"
- rem ----------获取计算机名称------------
- if "!var:~0,2!"=="\\" (
- set "var=!var:~2!"
- echo !var!
- Rem ----------ping计算机名--------------
- ping -n 1 !var!>nul
- )
- )
- echo.&echo -----------------------------
- Rem '/*========提取arp缓存=========*/
- echo.&echo 正在获取局域网内计算机IP,请稍等...& echo.
- for /f "skip=3 tokens=1,* delims= " %%i in ('arp -a') do echo IP: %%i 已经使用
-
- echo.&echo -----------------------------
- echo 程序完成,谢谢使用!
- pause>nul
复制代码
作者: lanlinlan 时间: 2008-1-18 15:06
不怎么准吧 我怎么只扫描到2台???
作者: zncznc 时间: 2008-6-10 05:13
恩恩。。。只扫到了几台而已
作者: ily2013 时间: 2008-12-27 11:02
我用的是nbtscan
作者: goofy123 时间: 2009-12-26 10:57
不错哦
学习了 谢谢楼主的分享
作者: hongcheng668 时间: 2010-9-16 11:01
code/echo 谢谢 分享了/code
作者: kuanzai 时间: 2010-10-13 11:10
不错,比我以前写的那个效率要高。。。
作者: cuipengfei 时间: 2010-10-15 14:27
只扫描到几台,我旁边有台电脑开着就没扫描到!
作者: liaobin 时间: 2011-3-31 22:32
不错,蛮好用的.谢谢了
作者: mxxcgzxxx 时间: 2011-3-31 23:01
本帖最后由 mxxcgzxxx 于 2011-3-31 23:07 编辑
用我的试试,比较短小!还会写入 1.txt 内,以备查看.
经学校测试效果极佳!
不在一个工作组下的可以显示,
不在一个IP段下的不能显示.
没开机的不能显示- @echo off
- @echo 中小网络在线IP分布情况>1.txt
-
- setlocal ENABLEDELAYEDEXPANSION
-
- @FOR /F "usebackq delims=, " %%J IN (`net view /domain ^|find "命令執行成功" /v ^|find "The command completed successfully." /v ^|find "命令成功完成" /v ^|find "--" /v ^|find "Domain" /v ^|find "" /v ^|find "コマンドは正常に終了しました" /v /i`) do (
-
- @echo =====domain:%%J========>>1.txt
- @echo =====domain:%%J========
-
- @FOR /F "usebackq eol=; delims=, " %%i in (`net view /domain:%%J ^|findstr "\\"`) DO (
-
- @FOR /F "usebackq eol=; tokens=1,2,3* delims=\\" %%a in (`echo %%i`) do (
-
- @FOR /F "tokens=1,2,3,4* usebackq delims=: " %%K IN (`@ping -a -n 1 -w 100 %%a ^|findstr "Pinging"`) do (
-
- @echo \\%%L %%M>>1.txt
- @echo \\%%L %%M
-
- )
-
- )
-
- )
-
- )
-
- echo %0
- pause "按任意键退出"
复制代码
作者: 冷玉公子 时间: 2011-4-19 20:33
IP取的不是很准哦
作者: jay_16 时间: 2011-4-22 16:53
学习一下,,,,,,,,,,,,,,,,
作者: ming668 时间: 2011-7-8 09:32
本帖最后由 ming668 于 2011-7-8 09:37 编辑
用我的试试,比较短小!还会写入 1.txt 内,以备查看.
经学校测试效果极佳!
不在一个工作组下的可以显示,
不在一个IP段下的不能显示.
没开机的不能显示
@echo off
@echo 中小网络在线IP分布情况>1.txt
setloc ...
mxxcgzxxx 发表于 2011-3-31 23:01
能否帮忙写个只要计算机名就可以的,不要其它的参数。
作者: beck1321 时间: 2012-9-13 20:57
人才~~~~~~~~~~~
作者: wosliming 时间: 2012-9-28 08:56
回复 1# youxi01
使用tokens=3 skip=2 delims=:,只能显示第一个启用的网卡地址,如果我有无线连接,就会显示无线连接的地址并在无线连接的网段中寻找了
这样不太好吧,希望能修正一下
作者: mufenn 时间: 2012-11-5 16:35
本帖最后由 mufenn 于 2012-11-5 16:39 编辑
非常感谢!很实用,虽然不是很准确但已经让我省去不少麻烦了。
提几个小意见,希望能增加一下。
1、加个使用IP的总计数
2、要是能自动显示空间IP那更好。
要求有点高。
作者: 纳兰龙珠 时间: 2014-8-30 13:40
用我的试试,比较短小!还会写入 1.txt 内,以备查看.
经学校测试效果极佳!
不在一个工作组下的可以显示,
不在一个IP段下的不能显示.
没开机的不能显示@echo off- @echo off
- @echo 中小网络在线IP分布情况>1.txt
-
- setlocal ENABLEDELAYEDEXPANSION
-
- @FOR /F "usebackq delims=, " %%J IN (`net view /domain ^|find "命令執行成功" /v ^|find "The command completed successfully." /v ^|find "命令成功完成" /v ^|find "--" /v ^|find "Domain" /v ^|find "" /v ^|find "コマンドは正常に終了しました" /v /i`) do (
-
- @echo =====domain:%%J========>>1.txt
- @echo =====domain:%%J========
-
- @FOR /F "usebackq eol=; delims=, " %%i in (`net view /domain:%%J ^|findstr "\\"`) DO (
-
- @FOR /F "usebackq eol=; tokens=1,2,3* delims=\\" %%a in (`echo %%i`) do (
-
- @FOR /F "tokens=1,2,3,4* usebackq delims=: " %%K IN (`@ping -a -n 1 -w 100 %%a ^|findstr "Pinging"`) do (
-
- @echo \\%%L %%M>>1.txt
- @echo \\%%L %%M
-
- )
-
- )
-
- )
-
- )
-
- echo %0
- pause "按任意键退出"
复制代码
...
mxxcgzxxx 发表于 2011-3-31 23:01
试试这个是不是更加安静简洁,呵呵- @echo off
- for /f "tokens=15" %%i in ('ipconfig ^| find /i "ip address"') do set ip=%%i
- echo %ip%
- pause
复制代码
作者: hnldwhm52 时间: 2014-9-11 12:05
不错.谢谢了!!!
作者: tail88 时间: 2014-12-26 13:38
感谢分享啊。
作者: xjhbbs 时间: 2022-3-10 14:02
经过测试,只要打开了防火墙就扫描不到了。。
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |