中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-13 20:40
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已解决]如何在.inf文本某两行之间插入一行数据
楼 主 [已解决]如何在.inf文本某两行之间插入一行数据 发表于 2008-03-07 16:52 ·  中国 福建 福州 联通
高级用户
★★
积分 581
发帖 277
注册 2006-12-23 05:10
UID 74328
性别 男
状态 离线
假如test.inf内容如下,如何在某两行之间插入一行数据?

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



Version_1
Version_2
Version_3


AddReg_1-1
AddReg_1-2
AddReg_1-3


DelReg_1
DelReg_2
DelReg_3


Strings_1
Strings_2
Strings_3


[ Last edited by suntb on 2008-3-8 at 01:57 PM ]
2 发表于 2008-03-07 16:56 ·  中国 福建 福州 联通
高级用户
★★
积分 581
发帖 277
注册 2006-12-23 05:10
UID 74328
性别 男
状态 离线
或者也可以理解成要在指定行
AddReg_1-2
下面插入一行数据
AddReg_1-4
3 发表于 2008-03-07 18:31 ·  中国 江苏 常州 溧阳市 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
UID 42345
状态 离线
@echo off
for /f "delims=" %%i in (test.inf) do (
echo %%i
if "%%i"=="AddReg_1-2" echo AddReg_1-4
)
pause
简单!简单!再简单!
4 发表于 2008-03-07 18:49 ·  中国 广东 揭阳 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
UID 110072
性别 男
状态 离线
不明白……
5 发表于 2008-03-07 19:00 ·  中国 福建 福州 联通
高级用户
★★
积分 581
发帖 277
注册 2006-12-23 05:10
UID 74328
性别 男
状态 离线
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兄的代码测试无反应 文本没有任何变动
6 发表于 2008-03-07 19:08 ·  中国 北京 华为云
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
UID 99469
性别 男
状态 离线
terse兄的代码本来就没有改动inf文件,

仅仅是显示而已
7 发表于 2008-03-07 19:18 ·  中国 福建 福州 联通
高级用户
★★
积分 581
发帖 277
注册 2006-12-23 05:10
UID 74328
性别 男
状态 离线
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 ]
8 发表于 2008-03-07 20:01 ·  中国 江苏 常州 溧阳市 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
UID 42345
状态 离线
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
简单!简单!再简单!
9 发表于 2008-03-07 20:42 ·  中国 北京 华为云
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
UID 99469
性别 男
状态 离线
难道inf文件是UNICODE的??
10 发表于 2008-03-07 23:49 ·  中国 广西 南宁 电信
初级用户
积分 115
发帖 45
注册 2007-03-03 10:09
UID 80655
性别 男
状态 离线
用sed最简洁: sed -i "/AddReg_1-2/aAddReg_1-4" test.inf
11 发表于 2008-03-08 00:19 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线

:: 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
12 发表于 2008-03-08 02:04 ·  中国 广东 深圳 电信
新手上路
积分 6
发帖 3
注册 2008-03-06 10:15
UID 112159
性别 男
状态 离线
哈哈,初到贵地,没想到是块我找了很久的宝地
我是一个新手,兴会兴会
13 发表于 2008-03-08 13:36 ·  中国 福建 福州 联通
高级用户
★★
积分 581
发帖 277
注册 2006-12-23 05:10
UID 74328
性别 男
状态 离线
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 ]
14 发表于 2008-03-08 18:45 ·  中国 广东 揭阳 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
UID 110072
性别 男
状态 离线
dos是万能的!他甚至不只是万能!
15 发表于 2008-05-10 01:43 ·  中国 辽宁 锦州 联通
中级用户
★★
积分 228
发帖 106
注册 2008-04-26 12:34
UID 117003
性别 男
状态 离线
Originally posted by suntb at 2008-3-8 01:36 PM:



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

用more转下测试通过 不知道是否有其他方法可以不用more

@echo off
for /f %%i in ('more "te ...


这个好用。
论坛跳转: