引用 | 編輯
yc421206
2007-07-30 16:40 |
1樓
▲ |
下面是引用炎峰於2007-07-22 16:57發表的 請問...批次檔問題!: 諾~小弟寫的小東東是要ping ip address,本是想寫ping 整個區段的, 但不知是批指令笨還是我笨,我越寫越多,最後放棄!目前只完成了class c 你就免強用這範例當學習吧 如果你有看不懂的指令可以去http://www.cn-dos.net/forum/forumdisplay.php?fid=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 x0 |