标题: 求助,一个文本文件的处理
[打印本页]
作者: gunship001
时间: 2010-3-21 11:28
标题: 求助,一个文本文件的处理
一个文本文件内,有1000多个要改的如“start number = X”的表达式,和别的不用改的东西,X为数字,各不相同且没有规律。我想把所有的X改为X*2,比如将“start number = 21”改为“start number = 42”,请问批处理或VB脚本应该怎么写?或者有什么简单的工具直接改?
作者: Hanyeguxing
时间: 2010-3-21 13:41
最好把要修改的文件贴出来,有几个问题你没说清楚:
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 ]
作者: gunship001
时间: 2010-3-21 14:06
以下为部分内容,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
.......
作者: Hanyeguxing
时间: 2010-3-21 14:26
@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 ]
作者: gunship001
时间: 2010-3-21 14:54
谢了!比用vb写字符串处理方便