永发信息网

用批处理写一个查看局域网所有在线主机

答案:1  悬赏:20  手机版
解决时间 2021-03-15 14:30
  • 提问者网友:美人性情
  • 2021-03-14 21:39
要求: 1.代码尽可能的简单点. 2.按IP-主机名格式排序. 3.导出到文本
最佳答案
  • 五星知识达人网友:何以畏孤独
  • 2021-03-14 23:02
@ECHO OFF & setLocal enableDelayedExpansion

::设置网段
set Range=10.10.1.1-254

::设置超时时间(毫秒)
set Timeout=5

::设置数据大小(字节)
set Bytes=1

::设置输出文件名
set FName=%date:~,4%%date:~5,2%%date:~8,2%%time::=%
set FName=%FName: =0%
set "FName=在线IP_%FName:.=%.txt"

::临时IP列表
set "IPList=%temp%\IPs"

::临时ARP表
set "ARPList=%temp%\ARP"

::临时主机名表
set "NameList=%temp%\Names"

::临时变量文件
set "TMP=%temp%\TMPV"

::清理临时文件
(
del "%IPList%"
del "%ARPList%"
del "%NameList%"
del "%TMP%"
)2>nul 1>nul

echo.┌─────────┰────────┰────────┐>"%FName%"
echo.│ Mac Address ┃ IP Address ┃ Machine Name │>>"%FName%"
echo.┝━━━━━━━━━╋━━━━━━━━╋━━━━━━━━┥>>"%FName%"

::获取可达IP
arp -d 2>nul 1>nul
for /f "delims=. tokens=1-4" %%i in ("%Range%") do (
set "SGMNT=%%i.%%j.%%k."
(
for /f "delims=- tokens=1,2" %%A in ("%%l") do (
(
for /l %%E in (%%A,1,%%B) do (
set "IP=!SGMNT!%%E "
echo.Pinging !IP:~,15! with %Bytes%-byte data. . .
(ping -n 1 -w %Timeout% -l %Bytes% !IP!>nul)&&(echo.!IP!>>"%IPList%")
)
)
)
)
)

::获取机器名和Mac地址
arp -a>"%ARPList%"
nbtstat -R>nul
for /f "tokens=*" %%i in (%IPList%) do (
nbtstat -a %%i>"%NameList%"

find "=" "%NameList%">nul && (
type "%NameList%"|find /V "GROUP"|find "<00>">"%TMP%"
for /f "delims=< " %%A in (%TMP%) do set "Name=%%A"

type "%NameList%"|find "=">"%TMP%"
for /f "delims== tokens=2*" %%A in (%TMP%) do set "Mac=%%A"
) || (
for /f "tokens=2 usebackq" %%A in (`find " %%i " "%ARPList%"`) do set "Mac=%%A"
)

set "Mac=!Mac: =! "
set "Mac=!Mac:~,17! "
set "IP=%%i "
set "IP=!IP:~,16!"
set "Name=!Name! "
set "Name=!Name:~,16!"
echo.│!Mac!┃!IP!┃!Name!│>>"%FName%"

)

echo.└─────────┸────────┸────────┘>>"%FName%"
echo.%DATE% %TIME%>>"%FName%"

del "%IPList%"
del "%ARPList%"
del "%NameList%"
del "%TMP%"
start notepad "%FName%"
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯