中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已解决]如何在.inf文本某两行之间插入一行数据
« [1] [2] »
作者:
标题: [已解决]如何在.inf文本某两行之间插入一行数据 上一主题 | 下一主题
suntb
高级用户





积分 581
发帖 277
注册 2006-12-23
状态 离线
『楼 主』:  [已解决]如何在.inf文本某两行之间插入一行数据

假如test.inf内容如下,如何在某两行之间插入一行数据?

比如说在
 AddReg_1-2
 AddReg_1-3
中间插入一行
 AddReg_1-4
使[AddReg]小节内容变成
 AddReg_1-1
 AddReg_1-2
 AddReg_1-4
 AddReg_1-3

  Quote:
[Version]
Version_1
Version_2
Version_3

[AddReg]
AddReg_1-1
AddReg_1-2
AddReg_1-3

[DelReg]
DelReg_1
DelReg_2
DelReg_3

[Strings]
Strings_1
Strings_2
Strings_3

[ Last edited by suntb on 2008-3-8 at 01:57 PM ]

2008-3-7 16:52
查看资料  发短消息 网志   编辑帖子  回复  引用回复
suntb
高级用户





积分 581
发帖 277
注册 2006-12-23
状态 离线
『第 2 楼』:  

或者也可以理解成要在指定行
AddReg_1-2
下面插入一行数据
AddReg_1-4

2008-3-7 16:56
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 3 楼』:  

@echo off
for /f "delims=" %%i in (test.inf) do (
echo %%i
  if "%%i"=="AddReg_1-2" echo AddReg_1-4
)
pause



简单!简单!再简单!
2008-3-7 18:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
523066680
银牌会员

SuperCleaner


积分 2362
发帖 1133
注册 2008-2-2
状态 离线
『第 4 楼』:  

不明白……

2008-3-7 18:49
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (523066680)  编辑帖子  回复  引用回复
suntb
高级用户





积分 581
发帖 277
注册 2006-12-23
状态 离线
『第 5 楼』:  



  Quote:
Originally posted by terse at 2008-3-7 18:31:
@echo off
for /f "delims=" %%i in (test.inf) do (
echo %%i
  if "%%i"=="AddReg_1-2" echo AddReg_1-4
)
pause

terse兄的代码测试无反应 文本没有任何变动

2008-3-7 19:00
查看资料  发短消息 网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 6 楼』:  

terse兄的代码本来就没有改动inf文件,

仅仅是显示而已

2008-3-7 19:08
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复
suntb
高级用户





积分 581
发帖 277
注册 2006-12-23
状态 离线
『第 7 楼』:  



  Quote:
Originally posted by abcd at 2008-3-7 19:08:
terse兄的代码本来就没有改动inf文件,

仅仅是显示而已

可是啥都没显示 只有pause的任意键提示

搜索了下原来帖子 在一个帖中willsort曾经给过一段代码
不过部分是乱码了 无法运行 哪位兄弟能帮忙还原下吗?

现将帖子http://www.cn-dos.net/forum/viewthread.php?tid=15788
第7楼willsort版主的回复贴在下面
:: Insert.bat - 在文本文件中的指定行插入一行
:: Will Sort - 2005/06/05 - CMD@WinXP
@echo off
for /f %%t in (1.txt) do echo %%t >>2.txt && if "%%t"=="4" echo insert_string>>2.txt
[ Last edited by suntb on 2008-3-7 at 07:19 PM ]

2008-3-7 19:18
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 8 楼』:  



  Quote:
Originally posted by suntb at 2008-3-7 19:00:



terse兄的代码测试无反应 文本没有任何变动

这样呢?  记得备份原文件
@echo off
for /f "delims=" %%i in (test.inf) do (
>>test_tmp.tmp echo %%i
  if "%%i"=="AddReg_1-2" >>test_tmp.tmp echo AddReg_1-4
)
move /y "test_tmp.tmp" "test.inf" 2>NUL
pause



简单!简单!再简单!
2008-3-7 20:01
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 9 楼』:  

难道inf文件是UNICODE的??

2008-3-7 20:42
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复
ceii
初级用户





积分 115
发帖 45
注册 2007-3-3
状态 离线
『第 10 楼』:  

用sed最简洁: sed -i "/AddReg_1-2/aAddReg_1-4" test.inf

2008-3-7 23:49
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 11 楼』:  


:: Insert.bat - 在文本文件中的指定行插入一行
:: Will Sort - 2005/06/05 - CMD@WinXP
@echo off
for /f %%t in (1.txt) do echo %%t >>2.txt && if "%%t"=="4" echo insert_string>>2.txt


2008-3-8 00:19
查看资料  发短消息 网志   编辑帖子  回复  引用回复
DC2008
新手上路





积分 6
发帖 3
注册 2008-3-6
状态 离线
『第 12 楼』:  

哈哈,初到贵地,没想到是块我找了很久的宝地
我是一个新手,兴会兴会

2008-3-8 02:04
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
suntb
高级用户





积分 581
发帖 277
注册 2006-12-23
状态 离线
『第 13 楼』:  



  Quote:
Originally posted by HAT at 2008-3-8 00:19:
@echo off
for /f %%t in (1.txt) do echo %%t >>2.txt && if "%%t"== ...

还是不行 估计是遇到.inf中的符号[]无法处理了

用more转下测试通过 不知道是否有其他方法可以不用more
@echo off
for /f %%i in ('more "test.inf"') do (
echo %%i >>temp.txt
if "%%i"=="AddReg_1-2" echo AddReg_1-4>>temp.txt
)
[ Last edited by suntb on 2008-3-8 at 01:53 PM ]

2008-3-8 13:36
查看资料  发短消息 网志   编辑帖子  回复  引用回复
523066680
银牌会员

SuperCleaner


积分 2362
发帖 1133
注册 2008-2-2
状态 离线
『第 14 楼』:  

dos是万能的!他甚至不只是万能!

2008-3-8 18:45
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (523066680)  编辑帖子  回复  引用回复
nipo
中级用户





积分 228
发帖 106
注册 2008-4-26
状态 离线
『第 15 楼』:  



  Quote:
Originally posted by suntb at 2008-3-8 01:36 PM:



还是不行 估计是遇到.inf中的符号[]无法处理了

用more转下测试通过 不知道是否有其他方法可以不用more
[code]
@echo off
for /f %%i in ('more "te ...

这个好用。

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


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



论坛跳转: