中国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 楼』:  



  Quote:
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 楼』:  



  Quote:
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 楼』:  



  Quote:
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 楼』:  



  Quote:
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 楼』:  



  Quote:
哦?
有必要么?
或者说有何区别?给个实例好么、?

误会了,我只是分析了以下你代码的妙处,勿怪。

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





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



  Quote:
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] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: