下面是引用炎峰於2007-07-22 16:57發表的 請問...批次檔問題!:
小弟是個超級新手...
http://www.cn-dos.ne...cht.htm
中 國 DOS 聯 盟
請問各位大大~
(1) 假如我想寫一個.cmd
.......
諾~小弟寫的小東東是要ping ip address,本是想寫ping 整個區段的,
但不知是批指令笨還是我笨,我越寫越多,最後放棄!目前只完成了class c
你就免強用這範例當學習吧
如果你有看不懂的指令可以去
http://www.cn-dos.net/forum/forum...=23&sid=YUS28M裡面很多高手的唷,祝你一切順心 ,加油
以下為source code
_____________________________________
複製程式
@echo off
:proceed_start
cls
echo 請輸入查詢IP開始位置(例:10.0.0.1)
set /p ip_start=
if not defined ip_start goto proceed_start
:proceed_end
echo 請輸入查詢IP結束位置(例:10.0.0.255)
set /p ip_end=
if not defined ip_end goto proceed_end
echo.
echo 掃瞄 IP Address 請稍後......
echo.
::以下為副程式呼叫
::===========================================================================
::開始掃瞄初始區段規則
call :check_ip_rules
::===========================================================================
::判斷ip規則等級
call :ip_rulse_scans
::===========================================================================
::依啟動旗標執行功能
::當旗標ip_rules=1
if /i "%ip_rules%"=="0" goto :eof
if /i "%ip_rules%"=="1" for /f "tokens=2 delims=:" %%a in ('ping -n 1 -w 1 %ip_on1%.%ip_on2%.%ip_on3%.%ip_on4%^|find "TTL"') do (
if /i TTL GEQ 0 (echo 設備 Reply form %ip_on1%.%ip_on2%.%ip_on3%.%ip_on4% 與本機電腦連線中)else echo echo 設備 Reply form %ip_on1%.%ip_on2%.%ip_on3%.%ip_on4% 與本機電腦已離線)
::當旗標ip_rules=2
::當旗標ip_rules=3
::當旗標ip_rules=4
::當旗標ip_rules=5
::當旗標ip_rules=6
::當旗標ip_rules=7
if /i "%ip_rules%"=="7" for /l %%a in (%ip_on4% 1 %ip_on5%) do (
for /f "tokens=1 delims=:" %%a in ('ping -n 1 -w 1 %ip_on1%.%ip_on2%.%ip_on3%.%%a^|findstr "TTL"') do (
if /i TTL GEQ 0 (echo 設備 %%a 與本機電腦連線中)else echo 設備 %%a 與本機電腦已離線))
::if /i "%ip_rules%"=="7" for /l %%a in (%ip_on4% 1 %ip_on5%) do (
:: for /f "tokens=1 delims=:" %%a in ('ping -n 1 -w 1 %ip_on1%.%ip_on2%.%ip_on3%.%%a^|findstr "TTL"') do (
:: if /i TTL GEQ 0 (echo %ip_on1%.%ip_on2%.%ip_on3%.%%a 連線中)else echo %ip_on1%.%ip_on2%.%ip_on3%.%%a 已離線))
::當旗標ip_rules=8
::if /i "%ip_rules%"=="8" for /f "tokens=1 delims=:" %%a in ('ping -n 1 -w 1 %ip_on1%.%ip_on2%.%ip_on3%.%ip_on4%^|find "TTL"') do
::if /i TTL gtr 0 (echo %ip_on1%.%ip_on2%.%ip_on3%.%ip_on4% 連線中) else echo %ip_on1%.%ip_on2%.%ip_on3%.%ip_on4% 已離線
::for /l %%a in (%start_no4% 1 %end_no4%) do (
::ping -w 1 -n 1 %start_no1%.%start_no2%.%start_no3%.%%a)
::pause>unl
echo 掃瞄結束!!!
pause>unl
exit
::===========================================================================
::副程式:check_ip_rules開始
:check_ip_rules
::開始掃瞄初始區段規則
for /f "tokens=1-4 delims=." %%a in ("%ip_start%") do (
set start_no1=%%a
set start_no2=%%b
set start_no3=%%c
set start_no4=%%d
)
::判斷輸入規則是否大於255,若大於255則進位
if /i %start_no1% gtr 255 set /a start_no2=start_no2+1
if /i %start_no2% gtr 255 set /a start_no3=start_no3+1
if /i %start_no3% gtr 255 set /a start_no4=start_no4+1
if /i %start_no1% gtr 255 set /a start_no1=255
if /i %start_no2% gtr 255 set /a start_no2=255
if /i %start_no3% gtr 255 set /a start_no3=255
::判斷輸入末端規則是否大於255,若大於255則結束程序
if /i %start_no4% gtr 255 goto :error1
::判斷末端規則是否小於等於0,若小於0則結束程序
if /i %start_no4% leq 0 goto :error1
::開始掃瞄結束區段規則
for /f "tokens=1-4 delims=." %%a in ("%ip_end%") do (
set end_no1=%%a
set end_no2=%%b
set end_no3=%%c
set end_no4=%%d
)
::判斷輸入規則是否大於255,若大於255則進位
if /i %end_no1% gtr 255 set /a end_no2=end_no2+1
if /i %end_no2% gtr 255 set /a end_no3=end_no3+1
if /i %end_no3% gtr 255 set /a end_no4=end_no4+1
if /i %end_no1% gtr 255 set /a end_no1=255
if /i %end_no2% gtr 255 set /a end_no2=255
if /i %end_no3% gtr 255 set /a end_no3=255
::判斷輸入末端規則是否大於255,若大於255則結束程序
if /i %end_no4% gtr 255 goto :error1
::判斷末端規則是否小於等於0,若小於0則結束程序
if /i %end_no4% leq 0 goto :error1
::判斷開始區段位置大於結束區段位置
if /i %start_no1% gtr %start_no1% goto error2
::字元補償-加速用
goto :eof
::副程式:check_ip_rules結束
::===========================================================================
::判斷ip規則等級
::兩者ip相同
:ip_rulse_scans
:condition1-1
if /i %start_no1%==%end_no1% if /i %start_no2%==%end_no2% if /i %start_no3%==%end_no3% if /i %start_no4%==%end_no4% set ip_on1=%start_no1%
if /i %start_no1%==%end_no1% if /i %start_no2%==%end_no2% if /i %start_no3%==%end_no3% if /i %start_no4%==%end_no4% set ip_on2=%start_no2%
if /i %start_no1%==%end_no1% if /i %start_no2%==%end_no2% if /i %start_no3%==%end_no3% if /i %start_no4%==%end_no4% set ip_on3=%start_no3%
if /i %start_no1%==%end_no1% if /i %start_no2%==%end_no2% if /i %start_no3%==%end_no3% if /i %start_no4%==%end_no4% set ip_on4=%start_no4%
if /i %start_no1%==%end_no1% if /i %start_no2%==%end_no2% if /i %start_no3%==%end_no3% if /i %start_no4%==%end_no4% echo 符合condition1-1
if /i %start_no1%==%end_no1% if /i %start_no2%==%end_no2% if /i %start_no3%==%end_no3% if /i %start_no4%==%end_no4% set /a ip_rules=1
:condition2-1
::classA-1
if /i %start_no1%==%end_no1% if /i %start_no2% lss %end_no2% if /i %start_no3%==%end_no3% if /i %start_no4%==%end_no4% set ip_on1=%start_no1%
if /i %start_no1%==%end_no1% if /i %start_no2% lss %end_no2% if /i %start_no3%==%end_no3% if /i %start_no4%==%end_no4% set ip_on2=%start_no2%
if /i %start_no1%==%end_no1% if /i %start_no2% lss %end_no2% if /i %start_no3%==%end_no3% if /i %start_no4%==%end_no4% set ip_on3=%start_no3%
if /i %start_no1%==%end_no1% if /i %start_no2% lss %end_no2% if /i %start_no3%==%end_no3% if /i %start_no4%==%end_no4% set ip_on4=%start_no4%
if /i %start_no1%==%end_no1% if /i %start_no2% lss %end_no2% if /i %start_no3%==%end_no3% if /i %start_no4%==%end_no4% set ip_on5=%end_no2%
if /i %start_no1%==%end_no1% if /i %start_no2% lss %end_no2% if /i %start_no3%==%end_no3% if /i %start_no4%==%end_no4% echo 符合condition2-1
if /i %start_no1%==%end_no1% if /i %start_no2% lss %end_no2% if /i %start_no3%==%end_no3% if /i %start_no4%==%end_no4% set /a ip_rules=2
if /i %start_no1%==%end_no1% if /i %start_no2% gtr %end_no2% if /i %start_no3%==%end_no3% if /i %start_no4%==%end_no4% set /a ip_rules=0 & goto error2
:condition2-2
::classA-2
if /i %start_no1%==%end_no1% if /i %start_no2% lss %end_no2% if /i %start_no3% lss %end_no3% if /i %start_no4%==%end_no4% set ip_on1=%start_no1%
if /i %start_no1%==%end_no1% if /i %start_no2% lss %end_no2% if /i %start_no3% lss %end_no3% if /i %start_no4%==%end_no4% set ip_on2=%start_no2%
if /i %start_no1%==%end_no1% if /i %start_no2% lss %end_no2% if /i %start_no3% lss %end_no3% if /i %start_no4%==%end_no4% set ip_on3=%start_no3%
if /i %start_no1%==%end_no1% if /i %start_no2% lss %end_no2% if /i %start_no3% lss %end_no3% if /i %start_no4%==%end_no4% set ip_on4=%start_no4%
if /i %start_no1%==%end_no1% if /i %start_no2% lss %end_no2% if /i %start_no3% lss %end_no3% if /i %start_no4%==%end_no4% set ip_on5=%end_no2%
if /i %start_no1%==%end_no1% if /i %start_no2% lss %end_no2% if /i %start_no3% lss %end_no3% if /i %start_no4%==%end_no4% set ip_on6=%end_no3%
if /i %start_no1%==%end_no1% if /i %start_no2% lss %end_no2% if /i %start_no3% lss %end_no3% if /i %start_no4%==%end_no4% echo 符合condition2-2
if /i %start_no1%==%end_no1% if /i %start_no2% lss %end_no2% if /i %start_no3% lss %end_no3% if /i %start_no4%==%end_no4% set /a ip_rules=3
:condition2-3
::classA-3
if /i %start_no1%==%end_no1% if /i %start_no2% lss %end_no2% if /i %start_no3% lss %end_no3% if /i %start_no4% lss %end_no4% set ip_on1=%start_no1%
if /i %start_no1%==%end_no1% if /i %start_no2% lss %end_no2% if /i %start_no3% lss %end_no3% if /i %start_no4% lss %end_no4% set ip_on2=%start_no2%
if /i %start_no1%==%end_no1% if /i %start_no2% lss %end_no2% if /i %start_no3% lss %end_no3% if /i %start_no4% lss %end_no4% set ip_on3=%start_no3%
if /i %start_no1%==%end_no1% if /i %start_no2% lss %end_no2% if /i %start_no3% lss %end_no3% if /i %start_no4% lss %end_no4% set ip_on4=%start_no4%
if /i %start_no1%==%end_no1% if /i %start_no2% lss %end_no2% if /i %start_no3% lss %end_no3% if /i %start_no4% lss %end_no4% set ip_on5=%end_no2%
if /i %start_no1%==%end_no1% if /i %start_no2% lss %end_no2% if /i %start_no3% lss %end_no3% if /i %start_no4% lss %end_no4% set ip_on6=%end_no3%
if /i %start_no1%==%end_no1% if /i %start_no2% lss %end_no2% if /i %start_no3% lss %end_no3% if /i %start_no4% lss %end_no4% set ip_on7=%end_no4%
if /i %start_no1%==%end_no1% if /i %start_no2% lss %end_no2% if /i %start_no3% lss %end_no3% if /i %start_no4% lss %end_no4% echo 符合condition2-3
if /i %start_no1%==%end_no1% if /i %start_no2% lss %end_no2% if /i %start_no3% lss %end_no3% if /i %start_no4% lss %end_no4% set /a ip_rules=4
:condition3-1
::classB-1
if /i %start_no1%==%end_no1% if /i %start_no2%==%end_no2% if /i %start_no3% lss %end_no3% if /i %start_no4%==%end_no4% set ip_on1=%start_no1%
if /i %start_no1%==%end_no1% if /i %start_no2%==%end_no2% if /i %start_no3% lss %end_no3% if /i %start_no4%==%end_no4% set ip_on2=%start_no2%
if /i %start_no1%==%end_no1% if /i %start_no2%==%end_no2% if /i %start_no3% lss %end_no3% if /i %start_no4%==%end_no4% set ip_on3=%start_no3%
if /i %start_no1%==%end_no1% if /i %start_no2%==%end_no2% if /i %start_no3% lss %end_no3% if /i %start_no4%==%end_no4% set ip_on4=%start_no4%
if /i %start_no1%==%end_no1% if /i %start_no2%==%end_no2% if /i %start_no3% lss %end_no3% if /i %start_no4%==%end_no4% set ip_on5=%end_no3%
if /i %start_no1%==%end_no1% if /i %start_no2%==%end_no2% if /i %start_no3% lss %end_no3% if /i %start_no4%==%end_no4% echo 符合condition3-1
if /i %start_no1%==%end_no1% if /i %start_no2%==%end_no2% if /i %start_no3% lss %end_no3% if /i %start_no4%==%end_no4% set /a ip_rules=5
if /i %start_no1%==%end_no1% if /i %start_no2%==%end_no2% if /i %start_no3% lss %end_no3% if /i %start_no4% gtr %end_no4% set /a ip_rules=5
if /i %start_no1%==%end_no1% if /i %start_no2%==%end_no2% if /i %start_no3% gtr %end_no3% if /i %start_no4%==%end_no4% set /a ip_rules=0 & goto error2
if /i %start_no1%==%end_no1% if /i %start_no2%==%end_no2% if /i %start_no3% gtr %end_no3% if /i %start_no4% gtr %end_no4% set /a ip_rules=0 & goto error2
:condition3-2
::classB-2
if /i %start_no1%==%end_no1% if /i %start_no2%==%end_no2% if /i %start_no3% lss %end_no3% if /i %start_no4% lss %end_no4% set ip_on1=%start_no1%
if /i %start_no1%==%end_no1% if /i %start_no2%==%end_no2% if /i %start_no3% lss %end_no3% if /i %start_no4% lss %end_no4% set ip_on2=%start_no2%
if /i %start_no1%==%end_no1% if /i %start_no2%==%end_no2% if /i %start_no3% lss %end_no3% if /i %start_no4% lss %end_no4% set ip_on3=%start_no3%
if /i %start_no1%==%end_no1% if /i %start_no2%==%end_no2% if /i %start_no3% lss %end_no3% if /i %start_no4% lss %end_no4% set ip_on4=%start_no4%
if /i %start_no1%==%end_no1% if /i %start_no2%==%end_no2% if /i %start_no3% lss %end_no3% if /i %start_no4% lss %end_no4% set ip_on5=%end_no3%
if /i %start_no1%==%end_no1% if /i %start_no2%==%end_no2% if /i %start_no3% lss %end_no3% if /i %start_no4% lss %end_no4% set ip_on6=%end_no4%
if /i %start_no1%==%end_no1% if /i %start_no2%==%end_no2% if /i %start_no3% lss %end_no3% if /i %start_no4% lss %end_no4% echo 符合condition3-2
if /i %start_no1%==%end_no1% if /i %start_no2%==%end_no2% if /i %start_no3% lss %end_no3% if /i %start_no4% lss %end_no4% set /a ip_rules=6
if /i %start_no1%==%end_no1% if /i %start_no2%==%end_no2% if /i %start_no3% gtr %end_no3% if /i %start_no4% lss %end_no4% set /a ip_rules=0 & goto error2
if /i %start_no1%==%end_no1% if /i %start_no2%==%end_no2% if /i %start_no3% gtr %end_no3% if /i %start_no4% gtr %end_no4% set /a ip_rules=0 & goto error2
:condition4-1
::classC
if /i %start_no1%==%end_no1% if /i %start_no2%==%end_no2% if /i %start_no3%==%end_no3% if /i %start_no4% lss %end_no4% set ip_on1=%start_no1%
if /i %start_no1%==%end_no1% if /i %start_no2%==%end_no2% if /i %start_no3%==%end_no3% if /i %start_no4% lss %end_no4% set ip_on2=%start_no2%
if /i %start_no1%==%end_no1% if /i %start_no2%==%end_no2% if /i %start_no3%==%end_no3% if /i %start_no4% lss %end_no4% set ip_on3=%start_no3%
if /i %start_no1%==%end_no1% if /i %start_no2%==%end_no2% if /i %start_no3%==%end_no3% if /i %start_no4% lss %end_no4% set ip_on4=%start_no4%
if /i %start_no1%==%end_no1% if /i %start_no2%==%end_no2% if /i %start_no3%==%end_no3% if /i %start_no4% lss %end_no4% set ip_on5=%end_no4%
if /i %start_no1%==%end_no1% if /i %start_no2%==%end_no2% if /i %start_no3%==%end_no3% if /i %start_no4% lss %end_no4% echo 符合condition4-1
if /i %start_no1%==%end_no1% if /i %start_no2%==%end_no2% if /i %start_no3%==%end_no3% if /i %start_no4% lss %end_no4% set /a ip_rules=7
if /i %start_no1%==%end_no1% if /i %start_no2%==%end_no2% if /i %start_no3%==%end_no3% if /i %start_no4% gtr %end_no4% set /a ip_rules=0 & goto error2
goto :eof
:error1
echo 輸入之IP ADDRESS規則有誤,請重新輸入。
pause>unl
goto :eof
:error2
echo 開始區段不得大於結束區段,程序將關閉。
pause>unl
goto :eof