中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-08 23:17
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 提取字符并按照要求输出2 查看 691 回复 6
楼 主 提取字符并按照要求输出2 发表于 2008-06-02 20:23 ·  中国 陕西 西安 联通
初级用户
积分 28
发帖 8
注册 2008-04-23 22:08
18年会员
UID 116749
性别 男
状态 离线
1.txt内容为:
11111 aaaa
22222 bbbb
33333 cccc

2.txt内容为:
aaaa 甲
bbbb 乙
cccc 丙
dddd 丁

要求输出3.txt内容为:
11111 aaaa 甲
22222 bbbb 乙
33333 cccc 丙
2 发表于 2008-06-02 21:50 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线

@echo off
set n=-1
for /f "delims=" %%i in (1.txt) do call :lp %%i
pause>nul&goto :eof
:lp
set /a n+=1
set "m=skip=%n%"
if %n% equ 0 set "m="
for /f "%m% tokens=2 delims= " %%i in (2.txt) do echo %1 %%i>>3.txt&goto :eof


[ Last edited by zw19750516 on 2008-6-2 at 09:51 PM ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
asnahu -2 2009-06-27 00:22
批处理之家新域名:www.bathome.net
3 发表于 2008-06-03 12:44 ·  中国 重庆 渝中区 联通
初级用户
★★
积分 198
发帖 89
注册 2007-09-06 23:22
18年会员
UID 96746
性别 男
来自 重庆
状态 离线
@echo off
for /f "tokens=1*" %%a in (1.txt) do (
for /f "tokens=1*" %%i in (2.txt) do (
if %%b==%%i echo %%a %%b %%j
)
)
pause
4 发表于 2008-06-03 12:45 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
Originally posted by WANKOILZ at 2008-6-3 12:44:
@echo off
for /f "tokens=1*" %%a in (1.txt) do (
for /f "tokens=1*" %%i in (2.txt) do (
if %%b==%%i echo %%a %%b %%j
)
)
pause

化码看起来是简化了很多,兄弟考虑了效率问题没有啊,我的两个for循环的次数是用+,而你的是用*。
批处理之家新域名:www.bathome.net
5 发表于 2008-06-03 12:48 ·  中国 重庆 渝中区 联通
初级用户
★★
积分 198
发帖 89
注册 2007-09-06 23:22
18年会员
UID 96746
性别 男
来自 重庆
状态 离线
我的两个for循环的次数是用+
我的循环的次数就肯定比你多了,呵呵
6 发表于 2008-06-03 12:49 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
Originally posted by WANKOILZ at 2008-6-3 12:48:
+是什么意思

第一个for在a.txt中循环的次数+第二个for在b.txt中循环的次数,大循次数实际上就是等于a.txt的行数。
而你的在b.txt中循环的次数等于a.txt的行数*b.txt的行数。
在行数不多的情况下,你的代码执行还可以,但遇到行数多的情况,如两个文件各有10000行,你的代码执行的效率将慢得让人无可忍受,而这种情况是完全可以避免的。

[ Last edited by zw19750516 on 2008-6-3 at 12:57 PM ]
批处理之家新域名:www.bathome.net
7 发表于 2008-06-03 13:05 ·  中国 重庆 渝中区 联通
初级用户
★★
积分 198
发帖 89
注册 2007-09-06 23:22
18年会员
UID 96746
性别 男
来自 重庆
状态 离线
这倒是一个以后值得注意的问题,受教。
论坛跳转: