中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何搜索某个字段后在下面添加行?
作者:
标题: 如何搜索某个字段后在下面添加行? 上一主题 | 下一主题
mydosp
新手上路





积分 0
发帖 3
注册 2010-12-21
状态 离线
『楼 主』:  如何搜索某个字段后在下面添加行?

例如:
有个Txtsetup.sif文件,其中含有 [HiveInfs.Fresh]和 [SourceDisksFiles]两个字段。

我想在 [HiveInfs.Fresh]下面添加:
AddReg = settings.inf,update一行字符,

在 [SourceDisksFiles]字段下面分别添加两行字符:
settings.inf =1,,,,,,_x,3,,3
settings.reg =100,,,,,,,2,0,0

需要注意的是[HiveInfs.Fresh]和[SourceDisksFiles]字段本身下面还有几行字符。


请问如何用批处理实现这两个字段下面字符的添加?本人才学批处理,请赐教。

2010-12-24 23:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 2 楼』:  

要求:此文件ANSI编码,最前、最后不能有空格等(被处理后的文件将删除空行)
@echo off&setlocal enableDelayedExpansion
(for /f "eol=€ delims=" %%a in (Txtsetup.sif) do (
    echo %%a
    if "%%a"=="[HiveInfs.Fresh]" echo AddReg = settings.inf,update
    if "%%a"=="[SourceDisksFiles]" (
    echo settings.inf =1,,,,,,_x,3,,3
    echo settings.reg =100,,,,,,,2,0,0
    )
))>han.ye
move han.ye Txtsetup.sif
[ Last edited by Hanyeguxing on 2010-12-25 at 06:31 ]



批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-12-25 06:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
mydosp
新手上路





积分 0
发帖 3
注册 2010-12-21
状态 离线
『第 3 楼』:  

Hanyeguxing,批处理试验成功。
但是这个批处理,把要添加的文本(Txtsetup.sif)的最前、最后的空格以及文本中间的空行都删除了,可是这些我都想保留。应该怎么办呢?谢谢你的帮助。

还有,我试验了下面这个批处理,但是处理速度太慢了,不如你的快,但是这个不删除空行。请看:
……………………………………………………………………………………………………
@echo off
for /f "delims=" %%a in (TXTSETUP.SIF) do (
    echo/%%a|findstr /xic:"[SourceDisksFiles]" >nul && (
        (echo/%%a
         ehco settings.inf=1,,,,,,_x,3,,3
         ehco settings.reg=100,,,,,,,2,0,0)>>newfile.txt
    )||(echo/%%a>>newfile.txt)
)

copy /y  newfile.txt TXTSETUP.SIF >nul && del newfile.txt
………………………………………………………………………………………
谢谢指教啊!

[ Last edited by mydosp on 2010-12-25 at 17:17 ]

2010-12-25 12:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 4 楼』:  

保留空格、空行,允许行首为;分号字符(但不允许行首为:冒号字符):
@echo off&setlocal enableDelayedExpansion
(for /f "tokens=1* delims=:" %%a in ('findstr /n .* "Txtsetup.sif"') do (
    echo/%%b
    set b=%%b
    set b=!b: =!
    if "!b!"=="[HiveInfs.Fresh]" echo AddReg = settings.inf,update
    if "!b!"=="[SourceDisksFiles]" (
        echo settings.inf =1,,,,,,_x,3,,3
        echo settings.reg =100,,,,,,,2,0,0
    )
))>han.ye
move han.ye Txtsetup.sif
[ Last edited by Hanyeguxing on 2010-12-25 at 19:30 ]



批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-12-25 19:18
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
mydosp
新手上路





积分 0
发帖 3
注册 2010-12-21
状态 离线
『第 5 楼』:  谢谢

谢谢!这个批处理很成功。我正在研究xp安装版如何定做,谢谢您对我的帮助。今后,还要向您讨教呢。

2010-12-25 19:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: