我给你两种方案:
1、用ping命令;
2、用netview命令。
用这两个命令结合批处理程序来达到你的目的!
这两个BAT是我以前写的,你可以修改下变成你运用得到的!呵呵!
1、ping方案(手动输入起始IP和结束IP):
off
title扫描在线IP
::MODEcon:COLS=60LINES=18
color0a
::装饰。
:kaishi
cls
for/l%%iin(1,1,4)doecho.
echo输入起始IP地址和结束IP地址后回车,扫描完成
echo之后会在此程序目录下生成TXT文件,文件内记录了
echo在线和不在线的主机。
echo.
set/pqishi=起始IP:
set/pjieshu=终止IP:
IFERRORLEVEL1echo错误的IP地址格式!&&pause&&gotokaishi
echo.
::从键盘获得两个变量的值。
for/f"tokens=1-4delims=."%%ain("%qishi%")do(
if%%aLSS0gotoerror
if%%aGTR255gotoerror
if%%bLSS0gotoerror
if%%bGTR255gotoerror
if%%cLSS0gotoerror
if%%cGTR255gotoerror
if%%dLSS0gotoerror
if%%dGTR255gotoerror
setv1=%%a
setv2=%%b
setv3=%%c
setv4=%%d
)
::分割起始IP的四个段并赋值,判断IP是否正确。
for/f"tokens=1-4delims=."%%ain("%jieshu%")do(
if%%aLSS0gotoerror
if%%aGTR255gotoerror
if%%bLSS0gotoerror
if%%bGTR255gotoerror
if%%cLSS0gotoerror
if%%cGTR255gotoerror
if%%dLSS0gotoerror
if%%dGTR255gotoerror
setv5=%%a
setv6=%%b
setv7=%%c
setv8=%%d
)
::分割终止IP的四个段并赋值,判断IP是否正确。
IF%V5%LSS%V1%echo错误:终止IP不能小于起始IP。&pause&gotokaishi
::判断终止IP与起始IP的正确性。
echo正在扫描...
IF%V4%LEQ%V8%setzengzhi_1=1
IF%V4%GEQ%V8%setzengzhi_1=-1
IF%v3%LEQ%v7%setzengzhi_2=1
IF%V3%GEQ%V7%setzengzhi_2=-1
IF%v2%LEQ%v6%setzengzhi_3=1
IF%v2%GEQ%v6%setzengzhi_3=-1
for/L%%din(%v1%,1,%v5%)do(
for/L%%cin(%v2%,%zengzhi_3%,%v6%)do(
for/L%%bin(%v3%,%zengzhi_2%,%v7%)do(
for/L%%ain(%v4%,%zengzhi_1%,%v8%)do(
ping/n1%%d.%%c.%%b.%%a>nul&&echo%%d.%%c.%%b.%%a开机&&echo%%d.%%c.%%b.%%a>>在线主机.txt||echo%%d.%%c.%%b.%%a关机&&echo%%d.%%c.%%b.%%a>>不在线主机.txt
)
)
)
)
for/l%%iin(1,1,5)doecho.
echo☆报告☆
IFEXIST在线主机.txt(
FOR/F"tokens=3delims="%%cin('find/c在线主机.txt""')dosetzx=%%c
)ELSE(
setzx=0
)
IFEXIST不在线主机.txt(
FOR/F"tokens=3delims="%%cin('find/c不在线主机.txt""')dosetbzx=%%c
)ELSE(
setbzx=0
)
set/azgjsj=%zx%+%bzx%
echo%date%%time%>☆报告☆.txt
echo扫了%zgjsj%台计算机!&echo扫了%zgjsj%台计算机!>>☆报告☆.txt
echo有%zx%台计算机在线!&echo有%zx%台计算机在线!>>☆报告☆.txt
echo有%bzx%台计算机不在线!&echo有%bzx%台计算机不在线!>>☆报告☆.txt
echo10秒后自动退出...&ping127.1-n10>nul&exit
:error
echo错误的IP地址!
pause
gotokaishi
2、用netview方案(全自动):
off
title共享扫描..ipc讲...
MODEcon:COLS=80LINES=22
color0a
echo.
echo工作组内所有计算机:
FOR/F"eol=-delims=\"%%cin('netview')do(
FOR/F"eol=服"%%iin('echo%%c')do(
FOR/F"eol=命"%%iin('echo%%c')do(
echo%%i
echo%%i>>全部在线主机.txt
echo%%i>>pcname.txt
echo%%i>>pcname2.txt
)
)
)
::echo分析其计算机的IP地址...
::FOR/F"delims="%%hin(pcname.txt)do
::FOR/F"tokens=3delims="%%jin('ping%%h-n1')doecho%%j
::)
echo.
echo扫描共享文件...
FOR/F"delims="%%cin(pcname.txt)do(
netview\%%c>nul2>nul&&echo%%c>>有共享.txt&&echo%%c共享文件:>>共享的文件2.txt&&echo==============================================>>共享的文件2.txt&&netview\%%c>>共享的文件2.txt&&echo.>>共享的文件2.txt&&echo.>>共享的文件2.txt&&echo%%c有共享||echo%%c无共享
)
::除去netview命令结果内多余的文字
FOR/F"eol=在delims="%%cin(共享的文件2.txt)do(
FOR/F"eol=-delims="%%iin('echo%%c')do(
FOR/F"eol=命delims="%%cin('echo%%i')do(
echo%%c>>共享的文件.txt
)
)
)
echo.
echo扫描能ipc拥募扑慊...
FOR/F"delims="%%iin(pcname.txt)do(
netuse\%%iipc"/user:"">nul2>nul&&echo%%i>>ipc映晒Φ募扑慊.txt&&netuse\%%i/del>nul&&echo%%iipc映晒!||echo%%iipc邮О!
)
echo.
echo.
echo.
echo☆报告☆
IFEXISTpcname2.txt(
FOR/F"tokens=3delims="%%cin('find/cpcname2.txt""')doecho当前工作组内有%%c台计算机!
)ELSE(
echo当前工作组内有0台计算机!
)
IFEXIST有共享.txt(
FOR/F"tokens=3delims="%%cin('find/c有共享.txt""')doecho当前工作组内有%%c台计算机有共享文件!&del有共享.txt
)ELSE(
echo当前工作组内有0台计算机有共享文件
)
IFEXISTipc映晒Φ募扑慊.txt(
FOR/F"tokens=3delims="%%cin('find/cipc映晒Φ募扑慊.txt""')doecho当前工作组内有%%c台计算机ipc芰映晒!
)ELSE(
echo当前工作组内有0台计算机ipc芰映晒!
)
delpcname.txt>nul
delpcname2.txt>nul
del共享的文件2.txt>nul
echo10秒后自动退出...&ping127.1-n10>nul&exit
为你的情况写的代码:
off
echo正在扫描...
FOR/F"delims="%%cin(d:esthostname.txt)doping%%c/n1>nul&&echo%%c开机!&&echo%%c>>d:est开机主机.txt||echo%%c关机!&&echo%%c>>d:est关机主机.txt
echo扫描完毕!
pause
200个计算机局域网适合什么 批处理检测局域网电脑是否开机(200多台电脑 不同网段 最好按主机名称检测)...