標籤:
我給你兩種方案:
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
批處理檢測區域網路電腦是否開機(轉載)