码迷,mamicode.com
首页 > 其他好文 > 详细

批处理检测局域网电脑是否开机(转载)

时间:2015-07-13 23:52:38      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:

我给你两种方案:
1、用ping命令;
2、用net view命令。
用这两个命令结合批处理程序来达到你的目的!
这两个BAT是我以前写的,你可以修改下变成你运用得到的!呵呵!

1、ping方案(手动输入起始IP和结束IP):
 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方案(全自动):
 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 \%%iipc " /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 











为你的情况写的代码:
 off
echo 正在扫描...
FOR /F "delims= " %%c in (d:    esthostname.txt) do ping %%c /n 1 >nul && echo %%c 开机! && echo %%c>>d:    est开机主机.txt||echo %%c 关机! && echo %%c>>d:    est关机主机.txt
echo 扫描完毕!
pause 

批处理检测局域网电脑是否开机(转载)

标签:

原文地址:http://www.cnblogs.com/lxy2015/p/4644040.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!