Board logo

标题: [文本处理] 文本修改工具change.exe [打印本页]

作者: Batcher    时间: 2008-8-30 11:41     标题: 文本修改工具change.exe

转帖
CHANGE.EXE 是一个以命令行方式处理对文件的修改工具,目标文件可以是任意大小任意格式。可以一次执行30条命令!非常地高效。

一、基本格式:
change 源文件.txt /from “被替换的串” /to “替换串” /in “条件”

二、已知限制是它不支持长名,可能不认识一些windows下的特殊字符作文件名。对此,解决之道是以短文件名访问(例如:myfile~1.txt)。

三、详细功能列表:
⒈處理的文件不限大小,前提是磁盤上至少要有与目标文件等大的预留空间,用于临时存放其副本;
⒉不仅处理文本文件,也处理二进制文件;
⒊替入和换出的字符串长度可以不同;
⒋可以指定替换行为只在特定行发生,特定行的标志是有另一个指定的字符(串)出现,这个字符串还允许大小写敏感;
⒌可以同时执行多达30个修改指令;
⒍支持子目录;
⒎兼容dos/Unix/Mac 文本格式;
⒏输入输出字符串可以是文本的(Ascii),也可以是十六进制值或十进制值;
⒐替换速的特快;
⒑具有备份选项,以防源文件可能损坏;
⒒替换工作可以交互式进行(控制台);
⒓除命令行、控制台它还允许把多条指令组合编制为一个控制文件一次执行;
⒔可以使用布尔变量;
⒕源文件名支持通配符;
⒖"*"用在指定的被修改字符串时,表示由当前位置到行尾的整个子串;
⒗在指定目标字符串时,可以设定“列”,仅当字符位于此范围内时才发生替换;
⒘可以按文件属性排除某个文件不被处理;
⒙可以排除某些行不处理;
⒚按ESC可以中止处理进程。

四、如何指定参数
        当程序运行时,它将以如下三种方式读取参数:
        ⒈INI文件
        ⒉系统环境变量
        ⒊命令行
        先看最常用的命令行语法。
To/From/In规范:
FROM        被替换的文字
TO        用于替换的文字
TO        (可选)指定发生替换行为的特定行标志
举例,设test.txt文件包含如下两行:
The quick brown fox jumped over
the lazy brown dog.

我们输入:
change /from brown /to red /fox
则文件变为:
The quick red fox jumped over
the lazy brown dog.
即:有出现"fox"的那行"brown:被替换为"red",其它行不变。

如果所指定字符串包含空格或其他特殊字符,请用双引号,比如:
CHANGE test.TXT /FROM "my music" /TO "my video"

或者用十六进制字符处理特殊字符,如:
CHANGE test.TXT /FROM &H0D0A0D0A /TO &H0D0A
(删除多余的行)

设定列宽的例子:
change test.txt /from ok 5/10 /to no
只替换从第5列到第10列的ok 为 no,这个功能是按首字符认定位置的,比如有一个“ok”位于4,5列那么它不会被替换。

仅删除的例子:
change test.txt /from no /to null
(即:删除所有的no)

如果要忽略英文字母的大小写,使用参数 /I

与DOS类似,可以用参数 /s 处理所有子目录中文件的替换工作

替换指定行的例子:
change test.txt /from no /to re /lines 3-8 30-50
(即:只替换3到8行和30到50行的字符)

出于安全目的,该程序总要自动生成一个临时文件备份源文件,如果用 /N文件名 参数另指定一个输出文件,则没有临时文件输出。

要消除文件末尾多余的空格,可以用参数 /trim

使用布尔变量的例子:
CHANGE TEST.TXT /FROM Apple /TO Banana /IN (red OR brown) AND NOT Pear
将替换apple为banana,但所在行必须有red或brown出现,并且没有Pear出现

本程序的返回误码意义:
0        无错,有修改
1        无错,无修改
253        提前中止
254        内部错误
255        语法错


http://pan.baidu.com/share/link?shareid=3858178609&uk=1124163200
作者: lululc    时间: 2008-11-10 17:00     标题: 作人要厚道,得人帮助要谢谢

谢谢无私奉献,正头疼BAT对文本处理没有现成的程序调用呢, 生了不少麻烦,把这个程序不段完善就更好了, 功能不段扩充, 发到CSDN上去或许得到大家好评并可以一起完善成一个很重要的工具的
作者: baiyuheitu    时间: 2009-5-29 09:10

顶,不错!
作者: syaini    时间: 2009-6-1 17:26

我用了好像不支持子目录啊
作者: SmallK    时间: 2011-6-10 02:57

本帖最后由 SmallK 于 2011-6-10 03:08 编辑

To/From/In规范:
FROM        被替换的文字
TO        用于替换的文字
TO        (可选)指定发生替换行为的特定行标志
举例,设test.txt文件包含如下两行:
The quick brown fox jumped over
the lazy brown dog.

我们输入:
change /from brown /to red /fox
则文件变为:
The quick red fox jumped over
the lazy brown dog.
即:有出现"fox"的那行"brown:被替换为"red",其它行不变。


原帖貌似少了些字符吧???是不是应该这样:
To/From/In规范:
FROM        被替换的文字
TO        用于替换的文字
IN        (可选)指定发生替换行为的特定行标志
举例,设test.txt文件包含如下两行:
The quick brown fox jumped over
the lazy brown dog.

我们输入:
change /from brown /to red /in fox
则文件变为:
The quick red fox jumped over
the lazy brown dog.
即:有出现"fox"的那行"brown:被替换为"red",其它行不变。

作者: user_    时间: 2011-6-15 20:35

有源文件嘛?
貌似64位平台无法运行。
作者: siyeyuexin    时间: 2011-7-7 22:43

就是需要这个命令行啊!谢谢楼主啊!
作者: 冬水    时间: 2012-3-11 07:06

谢谢无私奉献
作者: gudou    时间: 2012-6-28 11:02

看到百度上一个修改指定行的批处理,转过来看看
使用Dos命令修改文本文件指定行的内容rem 使用示例1:调用子程序replaceLine修改a.txt文件中第3行的内容为“我就百不度”

call :replaceLine C:\a.txt 3 我就百不度

rem 使用示例2:调用子程序replaceText替换a.txt文件中所有“百度”为“我就百不度”

call :replaceText C:\a.txt 百度 我就百不度




rem 子程序:替换文本文件中指定行的内容

:replaceLine

rem 需要操作的文件

set file=%1

rem 需要修改的行数

set lineNum=%2

rem 指定行替换的内容

set lineTxt=%3

@echo off

setlocal enabledelayedexpansion

for /f "delims=" %%a in ('type %file%') do (

    set /a n+=1

    if !n! equ %lineNum% (

        echo %lineTxt% >> %file%~tmp

    ) else (

        echo %%a >> %file%~tmp

    )

)

del /q %file%

move %file%~tmp %file%

goto :eof



rem 子程序:替换文本文件中的指定字符串

:replaceText

rem 需要操作的文件

set file=%1

rem 需要替换的字符串

set findStr=%2

rem 替换的目标字符串

set replaceStr=%3

@echo off

setlocal enabledelayedexpansion

for /f "delims=" %%i in ('type %file%') do (

    set str=%%i

    set str=!str:%findStr%=%replaceStr%!

    echo !str! >> %file%~tmp

)

del /q %file%

move %file%~tmp %file%

goto :eof



:eof




注:转载请保留此说明和链接,原文 http://hi.baidu.com/wojiubaibudu ... 8ae32393457e48.html
作者: 853122    时间: 2014-2-3 14:41

楼主牛逼
作者: h2bx86    时间: 2014-2-9 19:37

现在正需要,谢谢分享了。
作者: zhhq36    时间: 2014-11-27 21:33

很好很强大
作者: mycmd    时间: 2017-8-28 02:25

不支持 64位




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2