中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-04 21:52
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何把IP地址段192.168.0.1-254解析成IP 查看 957 回复 8
楼 主 如何把IP地址段192.168.0.1-254解析成IP 发表于 2007-06-12 14:07 ·  中国 广东 深圳 电信
中级用户
★★
积分 379
发帖 95
注册 2003-07-17 00:00
23年会员
UID 7038
性别 男
状态 离线
text:
192.168.0.1-254
-----------------------
要提取为ip段,开始数与结束数
就好这样:
ip段:192.168.0
开始数:1
结束数:254
注意开始数与结束数是变化的!
我的笨方法:
@echo off&SETLOCAL ENABLEDELAYEDEXPANSION
for /f "tokens=1,2* delims=-" %%i in (070612_S.txt) do (
set tmp=%%i
set end=%%j
for /f "tokens=1,2,3,4* delims=." %%a in ("!tmp!") do (
set ip=%%a.%%b.%%c
set start=%%d
echo/!start!
echo/!end!
echo/!ip!
)
)

[ Last edited by bjsh on 2007-7-31 at 03:05 PM ]
2 发表于 2007-06-12 14:31 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
为什么不先.再-
3 发表于 2007-06-12 15:00 ·  中国 广东 深圳 电信
中级用户
★★
积分 379
发帖 95
注册 2003-07-17 00:00
23年会员
UID 7038
性别 男
状态 离线
一个for可以完成吗?
4 发表于 2007-06-12 15:16 ·  中国 广东 深圳 电信
中级用户
★★
积分 379
发帖 95
注册 2003-07-17 00:00
23年会员
UID 7038
性别 男
状态 离线
还有for /f " tokens=1,2,3,4* delims=." %%a in ('dir/b *_S.txt') do (
为什么不能在in里面用dir/b *_S.txt结果作为提取文件名?
我发现%%a变成文件名?*_*
如果让dir /b *_S.txt与以下同样效果
for /f "tokens=1,2* delims=-" %%i in (070612_S.txt)
^^^^^^^^
5 发表于 2007-06-12 16:07 ·  中国 浙江 杭州 联通
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
19年会员
UID 75624
性别 男
状态 离线
@echo off
for /f "tokens=1,2,3,4* delims=.-" %%i in (1.txt) do (
echo IP段:%%i.%%j.%%k
echo 开始数:%%l
echo 结束数:%%m
)
pause


像这样的笨办法不行吗?
6 发表于 2007-06-12 18:16 ·  中国 广东 深圳 电信
中级用户
★★
积分 379
发帖 95
注册 2003-07-17 00:00
23年会员
UID 7038
性别 男
状态 离线
原来还要可同时使用不同距离分割符号,多谢了!不过为什么在in(`dir /b *.txt`)不行了?非要写死1.txt,是否真得不行?是在不加一个for前提下!我记得好像在论坛看到过有人就是在in(dir/?)什么的,就可以不用写上文件名又不用加多一个for提到文件名!
7 发表于 2007-06-12 18:31 ·  中国 浙江 杭州 联通
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
19年会员
UID 75624
性别 男
状态 离线
用两个for应该行的。dir /b *.txt在第一个for里。
8 发表于 2007-06-12 18:37 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
TO peterdocter:

要读取文件里面的内容,需要用“for /f %%a in (filename.ext) do ...”这样的格式来读取,如果是“for /f %%a in ('dir /b *.txt') do ...”就表示对“dir /b *.txt”命令的输出结果的内容进行分析处理,两者是不一样的。

至于in后面的(`dir /b *.txt`)需要加上“usebackq”选项之后才生效。
9 发表于 2007-06-12 18:49 ·  中国 广东 深圳 电信
中级用户
★★
积分 379
发帖 95
注册 2003-07-17 00:00
23年会员
UID 7038
性别 男
状态 离线
原来非要两个for不可,多谢了!
论坛跳转: