中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-26 12:56
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求助,一个文本文件的处理 查看 641 回复 4
楼 主 求助,一个文本文件的处理 发表于 2010-03-21 11:28 ·  中国 广东 潮州 电信
新手上路
积分 3
发帖 3
注册 2010-03-20 19:40
16年会员
UID 162652
性别 男
状态 离线
一个文本文件内,有1000多个要改的如“start number = X”的表达式,和别的不用改的东西,X为数字,各不相同且没有规律。我想把所有的X改为X*2,比如将“start number = 21”改为“start number = 42”,请问批处理或VB脚本应该怎么写?或者有什么简单的工具直接改?
2 发表于 2010-03-21 13:41 ·  中国 吉林 延边朝鲜族自治州 延吉市 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039
发帖 897
注册 2009-03-01 15:34
17年会员
UID 140302
性别 男
来自 在地狱中仰望天堂
状态 离线
最好把要修改的文件贴出来,有几个问题你没说清楚:
1,start number = X是否独立为一行
2,如果start number = X独立为一行,其前后是否存在空格及制表符
3,是否所有的start number = X都要改
4,文件中是否存在英文符号~!@#$%^&*()_+|\,./<>?;':"{}等中的哪些
5,文件中是否有空行,输出时是否保留这些空行
6,X是否存在为空,X后是否存在空格

@echo off&setlocal enabledelayedexpansion
for /f "eol= delims=" %%i in (data.txt) do (set i=%%i&if /i "!i:~,14!"=="start number =" (set n=!i:~15!&set/a n=n*2&echo start number = !n!) else (echo %%i))>>data_.txt

要求:原文件为data.txt,修改后文件为data_.txt。不保留空行,start number = X前后无任何其他字符,且独立为一行。没有考虑文件中可能存在的敏感字符问题。

[ Last edited by Hanyeguxing on 2010-3-21 at 13:48 ]
3 发表于 2010-03-21 14:06 ·  中国 广东 潮州 电信
新手上路
积分 3
发帖 3
注册 2010-03-20 19:40
16年会员
UID 162652
性别 男
状态 离线
以下为部分内容,start number为独立行,所有 start number行都改,有特殊字符”,”“:”,要求保留空行。谢谢回答

.....
name := 523
start position := 77,25,156
start number := 33
glow color := 256,256,256

name := 724
start position := 717,205,56
start number := 35
glow color := 26,156,223

name := 956
start position := 538,442,515
start number := 71
glow color := 207,26,25

.......
4 发表于 2010-03-21 14:26 ·  中国 吉林 延边朝鲜族自治州 延吉市 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039
发帖 897
注册 2009-03-01 15:34
17年会员
UID 140302
性别 男
来自 在地狱中仰望天堂
状态 离线
@echo off&setlocal enabledelayedexpansion
for /f "eol= delims=" %%i in ('findstr /n .* data.txt') do (
set i=%%i&set i=!i:*:=!
if /i "!i:~,15!"=="start number :=" (
set n=!i:~16!&set/a n=n*2
echo start number := !n!
) else (echo.!i!)
)>>data_.txt

说明:
原文件为data.txt
修改后文件为data_.txt
保留空行
保留所有;开头的行
按照你提供的部分文本测试通过

[ Last edited by Hanyeguxing on 2010-3-21 at 14:30 ]
5 发表于 2010-03-21 14:54 ·  中国 广东 潮州 电信
新手上路
积分 3
发帖 3
注册 2010-03-20 19:40
16年会员
UID 162652
性别 男
状态 离线
谢了!比用vb写字符串处理方便
论坛跳转: