中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-10 06:54
47,811 主题排行 / 349,897 发帖 / 今日 2 篇 / 48,255 会员排行
DOS批处理 & 脚本技术(批处理室) » [已解决]如何把IP自动转换成对应IP段?
可打印版本  802 / 4
第1楼 kele9988 发表于 2008-11-01 23:44
新手上路 发帖 12 积分 18
[已解决]如何把IP自动转换成对应IP段?
@echo off
for /f "tokens=15" %%i in ('ipconfig ^| find /i "ip address"') do set ip=%%i
echo 你的外网IP为:%ip%
pause

上面这段代码是自动获取本机外网IP并显示,请问大虾,如何在获取本机IP后,自动转换成相应的IP段,并写入文本。比如:
本机IP为 218.21.21.21,如何自动转换成218.21.0.0 218.21.255.255IP段格式。

[ Last edited by kele9988 on 2008-11-2 at 05:23 ]
第2楼 kele9988 发表于 2008-11-02 00:43
新手上路 发帖 12 积分 18
@echo off
for /f "tokens=15" %%A in ('ipconfig ^| find /i "ip address"') do set IP=%%A
set IP=%IP:~0,-9%
@echo %ip%.0.0 %ip%.255.255>ip.txt
exit

刚看了资料凑了这段代码,可以完成将本机IP转换成IP段,但只有满足IP最后2段都是3位的情况才能用,比如IP必须是*.*.111.222,如果是*.*.11.22或者*.*.11.222就不行,要把set IP=%IP:~0,-9% 中的9改成7或者8.
第3楼 kele9988 发表于 2008-11-02 05:40
新手上路 发帖 12 积分 18
等人回复的时间找资料看了下,终于搞懂for语句的用法,凑出代码了

@echo off
for /f "tokens=15" %%A in ('ipconfig ^| find /i "ip address"') do set IP=%%A
@echo %ip%>ip.txt
for /f "tokens=1,2 delims=." %%i in (ip.txt) do echo %%i.%%j.0.0 %%i.%%j.255.255>ip.txt
exit



上面这个获取本机IP的方法,如果是拨号上网,获取的一般就是外网IP,如果没联网获取的就是网卡绑定的内网IP,要确保获取外网IP,那就用下面这段代码,从别处看来的。

@echo off
echo On Error Resume next >checkip.vbs
echo Set oDOM=WScript.GetObject("http://www.ip138.com/ip2city.asp") >>checkip.vbs
echo Do Until oDOM.readyState="complete" >>checkip.vbs
echo WScript.sleep 100 >>checkip.vbs
echo Loop >>checkip.vbs
echo str = Split(oDOM.documentElement.outerText,"[") >>checkip.vbs
echo Set oDOM=nothing >>checkip.vbs
echo ip = Split(str(1),"]") >>checkip.vbs
echo Set FSO = CreateObject("Scripting.FileSystemObject") >>checkip.vbs
echo Set SCF = FSO.OpenTextFile(FSO.BuildPath(FSO.GetSpecialFolder(0),"ip.txt"),2,True) >>checkip.vbs
echo SCF.Write(ip(0)) >>checkip.vbs
echo SCF.Close >>checkip.vbs
echo fso.DeleteFile(WScript.ScriptName) >>checkip.vbs
checkip.vbs
set/p n=<%windir%\ip.txt&cls

@echo %n%>ip.txt
for /f "tokens=1,2 delims=." %%i in (ip.txt) do echo %%i.%%j.0.0 %%i.%%j.255.255>ip.txt
exit
第4楼 HAT 发表于 2008-11-02 10:06
版主 发帖 5,017 积分 9,023
Re 3楼
简化一下你的代码
第5楼 kele9988 发表于 2008-11-03 23:07
新手上路 发帖 12 积分 18
谢谢斑竹,受教了~
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023