![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-11 06:43 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [已结][超级感谢netbenton和其他老师的帮助]IP类型转换 |
| 可打印版本 2,794 / 29 |
| 第16楼 pooronce | 发表于 2009-01-04 11:02 |
| 中级用户 发帖 250 积分 484 | |
|
不错不错,这个算法精简多了
建议右边部分取9位,这样尽量减少算法使用的时间 |
|
| 第17楼 cz1314 | 发表于 2009-01-04 14:09 |
| 初级用户 发帖 43 积分 64 | |
|
看看这段如何?? @echo off&setlocal enabledelayedexpansion
set hex=0123456789ABCDEF for /f "usebackq tokens=1,2*" %%i in ("ip.txt") do ( if not "%%i"=="" set var=&set h=&set s=%%i&call:lp set/a ha=0x!var:~-8,2!,hb=0x!var:~-6,2!,hc=0x!var:~-4,2!,hd=0x!var:~-2,2! set str1=!ha!.!hb!.!hc!.!hd! if not "%%j"=="" set var=&set h=&set s=%%j&call:lp set/a ha=0x!var:~-8,2!,hb=0x!var:~-6,2!,hc=0x!var:~-4,2!,hd=0x!var:~-2,2! set str2=!ha!.!hb!.!hc!.!hd! >>ip1.txt echo !str1! !str2! %%k ) start "" "ip1.txt" pause&goto :eof :lp set/a m=s/16,n=s%%16 set n=!hex:~%n%,1! set h=%n%%h% if %m% geq 16 set s=%m%&goto lp set m=!hex:~%m%,1! set var=0%m%%h% 看看 这样会不会 有什么问题呢? [ Last edited by cz1314 on 2009-1-4 at 14:12 ] |
|
| 第18楼 HAT | 发表于 2009-01-04 14:48 |
| 版主 发帖 5,017 积分 9,023 | |
|
Re 17楼 有没有问题,你自己测试一下不就知道了么?
|
|
| 第19楼 linee | 发表于 2009-01-05 14:47 |
| 初级用户 发帖 49 积分 94 | |
|
我也来练习一下,
|
|
| 第20楼 netbenton | 发表于 2009-01-06 02:07 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
哇,厉害!
|
|
| 第21楼 terse | 发表于 2009-01-06 12:05 |
| 银牌会员 发帖 946 积分 2,404 | |
|
19楼上改进
|
|
| 第22楼 linee | 发表于 2009-01-06 20:57 |
| 初级用户 发帖 49 积分 94 | |
|
位移版,似乎更简单点
[ Last edited by linee on 2009-1-6 at 21:06 ] |
|
| 第23楼 netbenton | 发表于 2009-01-07 02:53 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
22楼的应该是绝版了
偶学习了 [ Last edited by netbenton on 2009-1-7 at 02:54 ] |
|
| 第24楼 cz1314 | 发表于 2009-01-08 00:34 |
| 初级用户 发帖 43 积分 64 | |
|
22 楼 好象没有输出大批文本啊。。。
|
|
| 第25楼 netbenton | 发表于 2009-01-08 01:06 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
根据22楼的稍作改动,这样就合要求了 @echo off
>IP_out.txt cd. for /f "tokens=1,2,3" %%i in (ip.txt)do call:conv %%i&call:conv %%j&echo %%k >>IP_out.txt type IP_out.txt pause goto:EOF :conv for %%i in (24 16 8 0)do set/a ip%%i=%1^>^>%%i^&255 set /p= %ip24%.%ip16%.%ip8%.%ip0% <nul >>IP_out.txt [ Last edited by netbenton on 2009-1-8 at 01:12 ] |
|
| 第26楼 scriptor | 发表于 2009-01-15 21:27 |
| 银牌会员 发帖 555 积分 1,187 | |
Originally posted by netbenton at 2009-1-8 01:06: 22# 25# 似乎都对超过4294967295 的数字不能转换了. 这是32bit机器上的上限. |
|
| 第27楼 scriptor | 发表于 2009-01-15 21:30 |
| 银牌会员 发帖 555 积分 1,187 | |
|
并且, 对于超出范围的数据,比如:
输出结果会取用上一个有效数据的值. |
|
| 第28楼 exzzz | 发表于 2009-01-15 22:31 |
| 初级用户 发帖 167 积分 194 | |
|
牛人啊!顶一个,最近几天忙着培训,没时间来学习了,呵呵。
|
|
| 第29楼 netbenton | 发表于 2009-01-16 00:30 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
超过32位的可以分成两截来处理,如15楼的方法,
只是不知道超过32位的ip地址有什么用? 3.0.0.0 61.152.182.160 US 238.107.40.1 3.0.3.255 US 211.144.182.64 3.0.4.255 US 238.107.40.0 3.0.7.255 US 238.221.88.251 3.0.8.255 US 2.150.70.25.199 2.150.70.25.198 cn 126.144.12.64 3.0.11.255 US 255.255.255.255 255.255.255.254 us 2.150.70.25.199 2.150.70.25.198 cn |
|
| 第30楼 cz1314 | 发表于 2009-01-16 01:37 |
| 初级用户 发帖 43 积分 64 | |
|
netbenton
非常感谢!也感谢所有老师的帮助! |
|
| 上一页 1 2 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |