批处理检测局域网电脑是否开机(200多台电脑,不同网段,最好按主机名称检测)

我想请dos高手们帮我写一段批处理命令,来检测mis域电脑开机状况,mis域电脑主机名称不会重复,我事先已经把主机名称写入一个hostname.txt文件中,放入服务器D... 我想请dos高手们帮我写一段批处理命令,来检测mis域电脑开机状况,mis域电脑主机名称不会重复,我事先已经把主机名称写入一个hostname.txt文件中,放入服务器D盘test文件夹中,最好用主机名称来检测(因为mis中电脑分三个网段,需要按主机名称生成开机列表),内网电脑防火墙已经关掉,最后把开机的电脑按照主机名称写入一个文本文件中。欢迎各位高手帮忙解决问题,谢谢!
操作系统限:windows xp,windows2000,windows nt4.0。最后把生成的报表开机列表文件也放入D盘test文件夹中。
例如:我写了下面一段代码,不知道为什么当所ping主机关机时就是不能把!errorlevel!变量赋值为1,所以下面的代码总是把所有的所ping主机都标识为开机
‘********************************************************************************
@echo off
setlocal enabledelayedexpansion
>>"D:\test\pingresult.txt" date/t //在D盘的一个txt文件里写入日期
FOR /f %%p IN (hostname.txt) Do (
ping %%p -n 1 -w 100>nul //这一行ping的参数可以查看微软的帮助信息
if !errorlevel!==0 ( //有回应就在txt文件里重定向信息
>>"D:\test\pingresult.txt" echo hostname:%%p 活动中!
)
)
exit
’********************************************************************************
hostname.txt内容格式如下:
test01
test02
test03
test04
test05
test06
test07
test08
test09
test10
输出的报表开机列表格式如下:
test01 开机
test03 开机
test04 开机
test07 开机
test08 开机
test10 开机
展开
 我来答
cc5511
2009-08-09 · TA获得超过1975个赞
知道小有建树答主
回答量:507
采纳率:0%
帮助的人:299万
展开全部

我给你两种方案:

1、用ping命令;

2、用net view命令。

用这两个命令结合批处理程序来达到你的目的!

这两个BAT是我以前写的,你可以修改下变成你运用得到的!呵呵!

1、ping方案(手动输入起始IP和结束IP):

@echo off

title 扫描在线IP

::MODE con: COLS=60 LINES=18

color 0a

::装饰。

:kaishi

cls

for /l %%i in (1,1,4) do echo.

echo                       输入起始IP地址和结束IP地址后回车,扫描完成

echo                   之后会在此程序目录下生成TXT文件,文件内记录了

echo                   在线和不在线的主机。

echo.

set /p qishi= 起始IP:

set /p jieshu= 终止IP:

IF ERRORLEVEL 1 echo 错误的IP地址格式! && pause && goto kaishi

echo.

::从键盘获得两个变量的值。

for /f "tokens=1-4 delims=." %%a in ("%qishi%") do (

if %%a LSS 0 goto error

if %%a GTR 255 goto error

if %%b LSS 0 goto error

if %%b GTR 255 goto error

if %%c LSS 0 goto error

if %%c GTR 255 goto error

if %%d LSS 0 goto error

if %%d GTR 255 goto error

 set v1=%%a

 set v2=%%b

 set v3=%%c

 set v4=%%d

)

::分割起始IP的四个段并赋值,判断IP是否正确。

for /f "tokens=1-4 delims=." %%a in ("%jieshu%") do (

if %%a LSS 0 goto error

if %%a GTR 255 goto error

if %%b LSS 0 goto error

if %%b GTR 255 goto error

if %%c LSS 0 goto error

if %%c GTR 255 goto error

if %%d LSS 0 goto error

if %%d GTR 255 goto error

 set v5=%%a

 set v6=%%b

 set v7=%%c

 set v8=%%d

)

::分割终止IP的四个段并赋值,判断IP是否正确。

IF %V5% LSS %V1% echo 错误:终止IP不能小于起始IP。& pause & goto kaishi

::判断终止IP与起始IP的正确性。

echo 正在扫描...

IF %V4% LEQ %V8% set zengzhi_1=1

IF %V4% GEQ %V8% set zengzhi_1=-1

IF %v3% LEQ %v7% set zengzhi_2=1

IF %V3% GEQ %V7% set zengzhi_2=-1

IF %v2% LEQ %v6% set zengzhi_3=1

IF %v2% GEQ %v6% set zengzhi_3=-1

for /L %%d in (%v1%,1,%v5%) do (

for /L %%c in (%v2%,%zengzhi_3%,%v6%) do (

for /L %%b in (%v3%,%zengzhi_2%,%v7%) do (

for /L %%a in (%v4%,%zengzhi_1%,%v8%) do (

ping /n 1 %%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 %%i in (1,1,5) do echo.

echo                                  ☆ 报告 ☆

IF EXIST 在线主机.txt (

FOR /F "tokens=3 delims= " %%c in ('find /c 在线主机.txt " "') do set zx=%%c

) ELSE (

set zx=0

)

IF EXIST 不在线主机.txt (

FOR /F "tokens=3 delims= " %%c in ('find /c 不在线主机.txt " "') do set bzx=%%c

) ELSE (

set bzx=0

)

set /a zgjsj=%zx%+%bzx%

echo %date% %time%>☆报告☆.txt

echo 扫了%zgjsj%台计算机! & echo 扫了%zgjsj%台计算机!>>☆报告☆.txt

echo 有%zx%台计算机在线! & echo 有%zx%台计算机在线!>>☆报告☆.txt

echo 有%bzx%台计算机不在线! & echo 有%bzx%台计算机不在线!>>☆报告☆.txt

echo        10秒后自动退出... & ping 127.1 -n 10 >nul & exit

:error

echo 错误的IP地址!

pause

goto kaishi

2、用net view方案(全自动):

@echo off

title 共享扫描..ipc$探测...

MODE con: COLS=80 LINES=22

color 0a

echo.

echo 工作组内所有计算机:

FOR /F "eol=- delims=\\" %%c in ('net view') do (

FOR /F "eol=服" %%i in ('echo %%c') do (

FOR /F "eol=命" %%i in ('echo %%c') do (

echo %%i

echo %%i>>全部在线主机.txt

echo %%i>>pcname.txt

echo %%i >>pcname2.txt

)

)

)

::echo 分析其计算机的IP地址...

::FOR /F "delims=" %%h in (pcname.txt) do 

::FOR /F "tokens=3 delims= " %%j in ('ping %%h -n 1') do echo %%j

::)

echo.

echo 扫描共享文件...

FOR /F "delims=" %%c in (pcname.txt) do (

net view \\%%c >nul 2>nul && echo %%c>>有共享.txt && echo %%c  共享文件:>>共享的文件2.txt && echo ==============================================>>共享的文件2.txt && net view \\%%c>>共享的文件2.txt && echo       .>>共享的文件2.txt && echo       .>>共享的文件2.txt && echo %%c  有共享||echo %%c  无共享

)

::除去net view命令结果内多余的文字

FOR /F "eol=在 delims=" %%c in (共享的文件2.txt) do (

FOR /F "eol=- delims=" %%i in ('echo %%c') do (

FOR /F "eol=命 delims=" %%c in ('echo %%i') do (

echo %%c>>共享的文件.txt

)

)

)

echo.

echo 扫描能ipc$连接的计算机...

FOR /F "delims=" %%i in (pcname.txt) do (

net use \\%%i\ipc$ "" /user:"" >nul 2>nul && echo %%i>>ipc$连接成功的计算机.txt && net use \\%%i /del>nul && echo %%i  ipc$连接成功!||echo %%i  ipc$连接失败!

)

echo.

echo.

echo.

echo                                  ☆ 报告 ☆

IF EXIST pcname2.txt (

FOR /F "tokens=3 delims= " %%c in ('find /c pcname2.txt " "') do echo 当前工作组内有%%c台计算机!

) ELSE (

echo 当前工作组内有0台计算机!

)

IF EXIST 有共享.txt (

FOR /F "tokens=3 delims= " %%c in ('find /c 有共享.txt " "') do echo 当前工作组内有%%c台计算机有共享文件! & del 有共享.txt

) ELSE (

echo 当前工作组内有0台计算机有共享文件

)

IF EXIST ipc$连接成功的计算机.txt (

FOR /F "tokens=3 delims= " %%c in ('find /c ipc$连接成功的计算机.txt " "') do echo 当前工作组内有%%c台计算机ipc$能连接成功!

) ELSE (

echo 当前工作组内有0台计算机ipc$能连接成功!

)

del pcname.txt>nul

del pcname2.txt>nul

del 共享的文件2.txt>nul

echo        10秒后自动退出... & ping 127.1 -n 10 >nul & exit 

为你的情况写的代码:

@echo off

echo 正在扫描...

FOR /F "delims= " %%c in (d:\test\hostname.txt) do ping %%c /n 1 >nul && echo %%c 开机! && echo %%c>>d:\test\开机主机.txt||echo %%c 关机! && echo %%c>>d:\test\关机主机.txt

echo 扫描完毕!

pause

千羽之城
2009-08-05 · TA获得超过4510个赞
知道大有可为答主
回答量:2132
采纳率:0%
帮助的人:1420万
展开全部
使用net view可以查看的,比如:

net view /domain:workgroup

即枚举域是workgroup中所有在线的电脑。将要枚举的域添加到批处理中然后输出文本即可。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
凌晨3点想起你
2009-08-05 · 超过57用户采纳过TA的回答
知道小有建树答主
回答量:154
采纳率:0%
帮助的人:171万
展开全部
用VB写一个小程序,用dos太麻烦,还批处理
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
炔月
2009-08-05 · 超过59用户采纳过TA的回答
知道小有建树答主
回答量:126
采纳率:0%
帮助的人:0
展开全部
利用 ping .
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式