如何使用批处理脚本在文本文件中替换文本?

12

我想创建一个脚本,它需要三个参数:文件路径、要替换的精确单词以及用什么来替换它。如何创建这样的脚本?

通常,我希望它具有如下API:

script.bat "C:/myTextDoc.xml" "_WORD_TO_REPLACE_" "WordTo Use"
3个回答

7
使用fnr实用工具,它比其他著名的工具更好,因为它可以基于正则表达式进行搜索和替换。对于UI爱好者,您可以在UI中配置选项,并生成命令行字符串,然后可以在脚本中使用。即使作为命令行字符串,也非常易于使用。
在此处查找:http://findandreplace.codeplex.com/ 此外,它是单个exe文件,没有任何依赖项,因此易于使用。
示例:
fnr --cl --dir "" --fileMask "hibernate.*" --useRegEx 
      --find "find_str_expression" --replace "replace_string"

1
声明“它是一个没有任何依赖关系的单个exe”是错误的。FNR是一个.NET应用程序,因此需要客户端机器上至少特定的.NET版本。来源:http://findandreplace.codeplex.com/SourceControl/latest - Eti
当前(1.7)版本不接受空的--dir参数。不过,提供当前工作目录即可完成任务:--dir %CD%。 - Eti

7
我曾经写过两个批处理脚本,以下是如何从命令行接收输入的方法:
script.bat filepath find replace
%1 = filepath, %2 = find, %3 = replace

要进行替换,请执行以下操作:

for /f "tokens=1,* delims=]" %%A in ('"type %1|find /n /v """') do (
set "line=%%B"
if defined line (
    call set "line=echo.%%line:%~2=%~3%%"
    for /f "delims=" %%X in ('"echo."%%line%%""') do %%~X
    ) ELSE echo.
)

我认为这对你有用。

(直接从@russ发布的链接中提取,数字变量已更改。)


3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接