中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 提取<title>与</title>之间的内容为新文件第一行,
<   <<   [1] [2]  >>
作者:
标题: 提取<title>与</title>之间的内容为新文件第一行, 上一主题 | 下一主题
WANKOILZ
初级用户





积分 198
发帖 89
注册 2007-9-6
来自 重庆
状态 离线
『第 16 楼』:  

不会的,zw兄看这个是不是快点:
@echo off
findstr "^abcd" 1.txt
pause
[ Last edited by WANKOILZ on 2008-5-29 at 09:17 PM ]


2008-5-29 21:13
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
WANKOILZ
初级用户





积分 198
发帖 89
注册 2007-9-6
来自 重庆
状态 离线
『第 17 楼』:  

网速慢,发重复了,删除此贴。 [ Last edited by WANKOILZ on 2008-5-29 at 09:16 PM ]


2008-5-29 21:14
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 18 楼』:  

Originally posted by WANKOILZ at 2008-5-29 21:13: 不会的,zw兄看这个是不是快点:
@echo off
findstr "^abcd" 1.txt
pause
[ Last edited by WANKOILZ on 2008-5-29 at 09:17 PM ]
请自己测试运行结果和时间吧。




批处理之家新域名:www.bathome.net
2008-5-29 21:21
查看资料  发送邮件  发短消息  网志  OICQ (841615149)  编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 19 楼』:  

findstr的效率并不是zw兄所想的那么不堪。(关键看怎么用) findstr的功能却可能超出你的想像。 按3楼 WANKOILZ 兄的思路也写了个,同时也给3楼代码提了提速。。。 呵呵,感觉应该快些,未测试。。。。 :
@echo off&md abcd
set "f=\<<title>.*</title>\>"
for /f "tokens=1,4 delims=:<>" %%a in ('findstr "%f%" *.txt') do set ".%%~na=%%b"
setlocal enabledelayedexpansion
for /f "tokens=1* delims=:" %%a in ('findstr /v "[<>]" *.txt') do (
   if not defined %%~na set %%~na=aaa&>>"abcd\%%a" echo !.%%~na!
   >>"abcd\%%a" echo.%%b
)
start abcd


   此帖被 +2 点积分    点击查看详情   
评分人:【 WANKOILZ 分数: +2  时间:2008-5-29 22:00




致精致简!
2008-5-29 21:23
查看资料  发短消息  网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 20 楼』:  

Originally posted by 26933062 at 2008-5-29 21:23: findstr的效率并不是zw兄所想的那么不堪。(关键看怎么用) findstr的功能却可能超出你的想像。 按3楼 WANKOILZ 兄的思路也写了个,同时也给3楼代码提 ...
我并不是说findstr一无是处,只是在说明在处理文本字符上不如if效率高。




批处理之家新域名:www.bathome.net
2008-5-29 21:26
查看资料  发送邮件  发短消息  网志  OICQ (841615149)  编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 21 楼』:  

Originally posted by zw19750516 at 2008-5-29 20:52: 楼上的测试代码有误,我认为要比较就要进行逐行判断,请测试以下代码(找出1.txt中所有以abcd开头的行并赋值为A): [code] @echo off if exist 1.txt del /q ...
每个命令都各有巧妙。 严格来说findstr和if是无法进行比较的,对文本处理用if就还要同时配合for、set等其它命令。 我们应该根据需要各取所长。而不以己之长比其之短。 如:zw兄所说,我拟一题,用findstr和for来比较速度如何? a.txt 内容有一万行,其中有10行是以abcd开头的, 要求:显示a.txt中 abcd 开头的行。




致精致简!
2008-5-29 21:32
查看资料  发短消息  网志   编辑帖子  回复  引用回复
WANKOILZ
初级用户





积分 198
发帖 89
注册 2007-9-6
来自 重庆
状态 离线
『第 22 楼』:  

26933062的代码确实很精简,令人佩服。 妙:把文本名字作为变量,在findstr /v "[<>]" *.txt的时候就能同时获得文本的标题和不包含<>的内容。 findstr + 通配符直接就获得所有文本,少用一层for 。 [ Last edited by WANKOILZ on 2008-5-29 at 09:50 PM ]


2008-5-29 21:45
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 23 楼』:  

Originally posted by WANKOILZ at 2008-5-29 21:45: 26933062的代码确实很精简,令人佩服。 把文本名字作为变量,在findstr /v "[<>]" *.txt的时候就能同时获得文本的标题和不包含<>的内容。 ...
哦? 有必要么? 或者说有何区别?给个实例好么、?




致精致简!
2008-5-29 21:47
查看资料  发短消息  网志   编辑帖子  回复  引用回复
WANKOILZ
初级用户





积分 198
发帖 89
注册 2007-9-6
来自 重庆
状态 离线
『第 24 楼』:  

哦? 有必要么? 或者说有何区别?给个实例好么、?
误会了,我只是分析了以下你代码的妙处,勿怪。


2008-5-29 21:50
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
loveid
初级用户





积分 38
发帖 15
注册 2008-4-21
状态 离线
『第 25 楼』:  to10f 不好意思,才来回复

Originally posted by zw19750516 at 2008-5-29 08:00 PM: 不知楼主测试了我发的两段代码没有,是不是不行,还是怎么的,怎么就没回馈的了(我自己建了10个文件是测试全部成功的)
运行后全部成功!!谢谢,我不太看懂的地方做了些修改,我感觉更好懂一些,先未征的你的同意,见凉,改了的地方为:if !n! equ 1 if not "!str:~,5!"=="<pre>" echo !str!>>%%a,改为:if !n! equ 1 if not "!str:~-4!"=="pre>" echo !str!>>%%a全部如下
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /a-d /b *.txt') do (
    for /f "delims=" %%i in ('type %%a') do (
        set str=%%i
        if "!str:~6,7!"=="<title>" echo !str:~13,-15!>%%a
        if "!str:~-4!"=="pre>" set /a n+=1
        if !n! equ 1 if not "!str:~-4!"=="pre>" echo !str!>>%%a
    )
    set n=0
)
echo 全部搞定!
pause>nul
测试也可.不知这样改,是不是对?谢谢!


2008-5-31 14:31
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
loveid
初级用户





积分 38
发帖 15
注册 2008-4-21
状态 离线
『第 26 楼』:  10f 以下的很多同仁的贴,我只能带回去慢慢分析了

我很基础的说,基础级的.呵呵!


2008-5-31 14:36
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
<   <<   [1] [2]  >>
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: