中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-10 11:00
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]如何修改文件 查看 781 回复 8
楼 主 [已结]如何修改文件 发表于 2008-11-09 22:14 ·  中国 北京 鹏博士BGP
新手上路
积分 4
发帖 12
注册 2008-11-02 21:39
17年会员
UID 129813
性别 男
状态 离线
例如一个txt文件中有如下几行
..N行..
A=3
B=4
C=5
..N行..
我在分析这个文件的时候想把文件修改成
..N行..
A=3
B=4
C=90
..N行..

对C后面的值进行修改,请高手指教,多谢。

[ Last edited by HAT on 2008-11-13 at 10:06 ]
2 发表于 2008-11-09 22:35 ·  中国 江西 赣州 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
18年会员
UID 96653
性别 男
状态 离线
就 5 行吗?只改变C后面的值?那随便怎么弄都没关系。但是没有直接修改文本内容的命令。
3 发表于 2008-11-09 22:38 ·  中国 北京 鹏博士BGP
新手上路
积分 4
发帖 12
注册 2008-11-02 21:39
17年会员
UID 129813
性别 男
状态 离线
是很多行,我要修改的那行在中间,多谢。
4 发表于 2008-11-09 22:47 ·  中国 江西 赣州 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
18年会员
UID 96653
性别 男
状态 离线
C 的值是否是固定的?是否有空白行?是否每行都是 左=右 的形式?

[ Last edited by tireless on 2008-11-11 at 09:55 ]
5 发表于 2008-11-10 22:30 ·  中国 北京 鹏博士BGP
新手上路
积分 4
发帖 12
注册 2008-11-02 21:39
17年会员
UID 129813
性别 男
状态 离线
C的值不是固定的。

思路是不是这样:
判断如果不是修改的那行,就重新定向到新文件。
如果是修改的那行,修改后重新定向到新文件。

还有没有更好的办法?新人请教
6 发表于 2008-11-11 09:47 ·  中国 江西 赣州 安远县 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
18年会员
UID 96653
性别 男
状态 离线
感觉方法比较笨:
@echo off
setlocal EnableDelayedExpansion
for /f "delims=" %%a in (test.txt) do (
set str=%%a
if /i "!str:~,2!" equ "c=" (echo c=90>>test_new.txt) else echo %%a>>test_new.txt
)
7 发表于 2008-11-11 10:19 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
@echo off
change a.txt /from "C=*" /to "C=90"

change.exe可以去这里下载:批处理室附件收集专用帖
8 发表于 2008-11-11 10:22 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
@echo off
sed -i "s/C=.*/C=90/g" a.txt

sed.exe可以去这里下载:批处理室附件收集专用帖
9 发表于 2008-11-13 08:14 ·  中国 北京 鹏博士BGP
新手上路
积分 4
发帖 12
注册 2008-11-02 21:39
17年会员
UID 129813
性别 男
状态 离线
多谢HAT大侠
论坛跳转: