如何编程实现列出当前网络里所有的机器名
在网络里面用net view不能列出机器列表,还有什么办法可以列出机器列表吗?
如何编程实现。
------解决方案--------------------
::原理介紹:先通過net view命令獲取局域網的所有電腦
::(無法查詢沒有安裝netbios協定的電腦);再ping這些電腦(ping不通也沒關係)
::然後查arp緩存。
::code by youxi01@bbs.bathome.cn 2008-1-7
@echo off &setlocal enabledelayedexpansion
title 局域網空閒IP查詢@bbs.bathome.cn
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
::试试把这些文字存成批处理档,看看是否达到你的要求