中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]如何把指定行的字符串追加到文件
作者:
标题: [求助]如何把指定行的字符串追加到文件 上一主题 | 下一主题
29984365
初级用户





积分 39
发帖 15
注册 2007-4-4
状态 离线
『楼 主』:  [求助]如何把指定行的字符串追加到文件

我有一堆类似这样的存储数据的文本,

  Quote:
标识a:1111个单位
中间可能有N个标识
标识b:222个单位
分隔符
标识c:333个单位
标识c:4444个单位
标识d:55个单位

文本特点:标识可能重复,每个数据的长度不固定,每种单位也不一定相同
我想从这样特点的数据文本里找到分隔符下的那一行的数据追加到一个文件中

我的想法是先确定分隔符的行数X,读取X+1行,提取需要的数据。因为是新手,看了置顶索引里的那些帖子还是迷迷糊糊的,下面写的这个批处理也是很笨拙,还有些问题:比如数据长度变动,就没法准确记录了!
@echo off
setlocal
for /f "tokens=1,* delims=:" %%a in ('findstr /n /c:"分隔符" test.txt') do (
        set line=%%a
        )
set num=0
setlocal enabledelayedexpansion
for /f "skip=%line% delims=" %%i in (test.txt) do (
    set /a num+=1
    set var=%%i
    if !num! equ 1 echo !var:~7,3!>>num.txt
)
endlocal
不知道哪位高手能帮忙指点一二,优化下

[ Last edited by 29984365 on 2007-4-6 at 06:12 PM ]

2007-4-6 05:57
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 2 楼』:  


根据楼主另提的要求及目的写了这个批处理,楼主试试,不行再跟贴讨论。
@Echo off&SetLocal EnableDelayedExpansion
for /f "delims=" %%a in ('findstr ">.*<" ko_.html') do (
        set "string=%%a"
        set "string=!string:>=\!"&set "string=!string:<=\!"
        if defined lxmxn (set "lxmxn="&&call :printf "!string!") else (echo !string!|find "总帖数" >nul 2>nul&&set lxmxn=cn-dos)
)
:end
pause&exit/b


:printf
set hello=%~1
for /f "tokens=2 delims=\" %%i in ("%hello%") do echo %%i
exit/b


   此帖被 +1 点积分    点击查看详情   
评分人:【 29984365 分数: +1  时间:2007-4-6 07:12


2007-4-6 07:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
29984365
初级用户





积分 39
发帖 15
注册 2007-4-4
状态 离线
『第 3 楼』:  

测试过了,非常好用。

如果处理很多文件,估计需要漫长的等待了=.=

2007-4-6 07:12
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: