![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-05 11:18 |
共 48,038 主题排行 / 350,123 发帖 / 今日 1 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 求达人编个检验子网掩码是否正确的批处理 |
| 可打印版本 736 / 3 |
| 第1楼 lg560852 | 发表于 2007-07-28 12:48 |
| 初级用户 发帖 26 积分 60 | |
|
求达人编个检验子网掩码是否正确的批处理 RT
|
|
| 第2楼 lg560852 | 发表于 2007-07-28 12:50 |
| 初级用户 发帖 26 积分 60 | |
|
俺只找到了这个:
利用javascript验证子网掩码的合法性 先使用正则表达式来验证(^((\d|[01]?\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[01]?\d\d|2[0-4]\d|25[0-5])$)|^(\d|[1-2]\d|3[0-2])$,再使用下面的方法(ip地址的正则表达式为^((\d|[01]?\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[01]?\d\d|2[0-4]\d|25[0-5])$,mac地址的正则表达式为([0-9a-fA-F]{2}[-:]){5}[0-9a-fA-F]{2}$) mask是子网掩码的input,view是alert的字段,number是一个hidden,用来获取从左到右最后一个1是第几位 function maskValidate(form,mask,view,number){ var netMask=mask.value; var netMask0=netMask.split(".")[0]; var reg var tmp=128; flaglength=0; startlength=0; endlength=0; flag=0; var myReg = /^(\d|[1-2]\d|3[0-2])$/; if(netMask.match(myReg) || netMask==""){ number.value=netMask; return true; }else if(netMask!="" && (netMask.split(".")[0]!=0 || netMask.split(".")[1]!=0 || netMask.split(".")[2]!=0 || netMask.split(".")[3]!=0)){ if((tmp & netMask0)==0){ alert(view+"不合法"); return false; } var tmpMask=netMask0; for(var i=0;i<4;i++){ startlength=0; tmpMask=netMask.split(".")[i]; for(var j=0;j<8;j++){ if(flag==0 && (tmp & tmpMask)==0){ tmpMask=(tmpMask<<1); flag=1; startlength=j+i*8; }else if(flag==1 && (tmp & tmpMask)==128){ alert(view+"不合法"); return false }else{ tmpMask=(tmpMask<<1); } } } number.value=startlength; } return true; } |
|
| 第3楼 wudixin96 | 发表于 2007-07-28 13:25 |
| 银牌会员 发帖 931 积分 1,928 | |
|
找到JS不就一样嘛?
|
|
| 第4楼 lg560852 | 发表于 2007-07-28 13:36 |
| 初级用户 发帖 26 积分 60 | |
|
:enda
echo %yy% set /p uu=输入子网掩码(格式:255.255.255.0): echo %uu%|findstr "^[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*$">nul||goto failb set _uu=%uu:.= % call :checkb %_uu% goto end :checkb if "%4"=="" goto failb if "%1"=="0" goto failb if %4 gtr %3 goto failb if %3 gtr %2 goto failb if %2 gtr %1 goto failb for %%u in (%1 %2 %3 %4) do (if %%u gtr 255 goto failb for %%t in (0,128,192,224,240,248,252,254,255) do (if "%%u"=="%%t" goto endb) goto failb) :failb ::cls echo %uu%是错误的子网掩码!! echo. pause goto enda :endb :end 这段代码为什么%U只执行一遍?? 运行后: C:\>echo ECHO 处于打开状态。 C:\>set /p uu=输入子网掩码(格式:255.255.255.0): 输入子网掩码(格式:255.255.255.0):255.255.255.1 C:\>echo 255.255.255.1 | findstr "^[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*$" 1>nul || g oto failb C:\>set _uu=255 255 255 1 C:\>call :checkb 255 255 255 1 C:\>if "1" == "" goto failb C:\>if "255" == "0" goto failb C:\>if 1 GTR 255 goto failb C:\>if 255 GTR 255 goto failb C:\>if 255 GTR 255 goto failb C:\>for %u in (255 255 255 1) do ( if %u GTR 255 goto failb for %t in (0 128 192 224 240 248 252 254 255) do (if "%u" == "%t" goto endb ) goto failb ) C:\>( if 255 GTR 255 goto failb for %t in (0 128 192 224 240 248 252 254 255) do (if "255" == "%t" goto endb ) goto failb ) C:\>(if "255" == "0" goto endb ) C:\>(if "255" == "128" goto endb ) C:\>(if "255" == "192" goto endb ) C:\>(if "255" == "224" goto endb ) C:\>(if "255" == "240" goto endb ) C:\>(if "255" == "248" goto endb ) C:\>(if "255" == "252" goto endb ) C:\>(if "255" == "254" goto endb ) C:\>(if "255" == "255" goto endb ) C:\>goto end |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |