中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-13 23:54
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何在已存在的文件中指定的位置插入数据
楼 主 如何在已存在的文件中指定的位置插入数据 发表于 2005-05-30 00:00 ·  中国 湖北 黄石 移动
初级用户
积分 137
发帖 12
注册 2005-05-25 00:00
UID 39045
性别 男
状态 离线
如有一个.txt 文件:内容为:1
2
3
4
5
我如何有dos命令在4的前一行插入一排abc,得到如下:
1
2
3
abc
4
5
请各们高手不惜告诉! 在这先谢各位了!
2 发表于 2005-05-30 00:00 ·  中国 山西 运城 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
UID 19
性别 男
状态 离线
Re sncffb  实现此特性的最佳方案是利用文本流处理工具,比较通用的有类C的GAWK,支持正则表达式的SED等,比较简单的有LMOD等,或者利用串替换工具也可以达到类似的效果,比如HEXC\CHANGE等。等然,这些都属于第三方工具,我在彼处的经验不是很多。  如果用纯批处理实现,需要区分是否NT系列环境。如果是,可以利用相对比较简单的FOR文本解析来实现特有的功能,即判断到指定行(用关键字或者行号)时,进行特有的操作。如果非NT环境,则需要使用其它一些文本行遍历的技巧,这我在旧贴中曾经多次涉及,你可以以“文件遍历”关键字搜索论坛。
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
3 发表于 2005-06-02 00:00 ·  中国 上海 黄浦区 电信
银牌会员
★★★
永遠的DOS~~~
积分 1,200
发帖 466
注册 2005-02-01 00:00
UID 35867
性别 男
来自 上海
状态 离线
可以用Find或者xfind之类的。哈哈,最简单的就是重新写一遍
32位才是DOS未来的希望
个人网志:http://sololand.moe
4 发表于 2005-06-02 00:00 ·  中国 湖北 黄石 移动
初级用户
积分 137
发帖 12
注册 2005-05-25 00:00
UID 39045
性别 男
状态 离线
我好象在哪里看见过这种用法。不象上面两位老兄说的那样,那样麻烦。只是有一个简单的 >> 解决了问题,不过还要在其前面加一句什么字段。不记得了。具体在那看到不记得,我确认是往autoexe , config ,msdos 里插入一句,但前一行好象一字段是boot .望各们高手们知道就写下来,共同发展dos之路,
5 发表于 2005-06-02 00:00 ·  中国 山西 运城 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
UID 19
性别 男
状态 离线
Re sncffbo  简单的使用>>,只能在文本尾部添加串,而不会插入串。  实现不用第三方工具在特定地址或特征字符串后插入串仍然是比较复杂的,三楼提到的find可以用,但是需要较多的辅助语句,我写的大部分文本遍历算法中就都用到了find。
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
6 发表于 2005-06-04 00:00 ·  中国 福建 三明 电信
中级用户
★★
积分 316
发帖 83
注册 2005-03-01 00:00
UID 36626
性别 男
状态 离线
set a=0set b=0for /f %%i in (1.txt) do if "%%i"=="4" goto :after4 else echo %%i >>2.txt && set /a a=a+1:after4echo add_string >>2.txtfor /f %%i in (1.txt) do set /a b=b+1 && if !b! GTR %a% echo %%i >>2.txt不知道这种思路可不可以!b!好像要延缓环境变量在黑窗体中是cmd/vn在批处理中不知道怎么用请高手指点
7 发表于 2005-06-06 00:00 ·  中国 山西 运城 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
UID 19
性别 男
状态 离线
Re smileseeker:
::VarDelay.bat - 在批处理中使用延迟变量
::Will Sort - 2005/06/05 - CMD@WinXP
@echo off
if "%1"=="" cmd /vn /c%0 cmdshell && goto :EOF
:: Run in cmd shell with delayed environment variable expansion
for %%v in (1 2 3 4 5 6 7 8 9) do set ev=%%v && echo !ev!
:: 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
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
8 发表于 2005-06-06 00:00 ·  中国 福建 三明 电信
中级用户
★★
积分 316
发帖 83
注册 2005-03-01 00:00
UID 36626
性别 男
状态 离线
高手就是高手语句就是精练学了一招
论坛跳转: