我正在使用Windows命令行环境编写一个批处理文件脚本,并希望更改文件中每次出现的一些文本(例如。“FOO”)和另一个(ex。“酒吧”)。最简单的方法是什么?有内置函数吗?


当前回答

刚刚使用的FART(“查找和替换文本”命令行实用程序): 优秀的小免费软件的文本替换在一个大的文件集。

安装文件在SourceForge上。

使用的例子:

fart.exe -p -r -c -- C:\tools\perl-5.8.9\* @@APP_DIR@@ C:\tools

将在这个Perl发行版的文件中预览递归执行的替换。

唯一的问题是:屁的网站图标不是很有品位,精致或优雅;)


2017年更新(7年后)jagb在2011年Mikail Tunç的文章“放屁的简单方法-查找和替换文本”的评论中指出


正如Joe Jobs在评论(2020年12月)中指出的,例如,如果你想替换&A,你需要使用引号,以确保&不会被shell解释:

fart in.txt "&A" "B" 

其他回答

Powershell命令-

获取文件的内容,并将其替换为其他文本,然后存储到另一个文件中

命令1 | ForEach-Object {$_.replace("some_text","replace_text").replace("some_other_text","replace_text")} | Set-Content filename2.xml

将另一个文件复制到原始文件中

Command2

复制-项目-路径filename2.xml -目标文件名.xml -PassThru .xml

删除另一个文件

命令3

Remove-Item filename2.xml

下载Cygwin(免费)并在Windows命令行中使用类unix命令。

您最好的选择:sed

刚刚遇到了一个类似的问题-“搜索和替换文件中的文本”,但除了文件名和搜索/替换我都需要使用正则表达式。因为我不熟悉Powershell,想要保存我的搜索以供以后使用,所以我需要一些更“用户友好”的东西(如果它有GUI的话更可取)。

所以,在谷歌搜索:)时,我发现了一个很棒的工具——FAR(查找和替换)(不是屁)。

这个小程序有很好的GUI和支持正则表达式在文件名和文件内搜索。唯一的缺点是,如果你想保存你的设置,你必须以管理员身份运行程序(至少在Win7上)。

在Visual c++下编写代码时,我曾多次遇到过这个问题。 如果你有它,你可以使用Visual studio查找和替换实用程序。它允许您选择一个文件夹,并用您想要的任何其他文本替换该文件夹中任何文件的内容。

在Visual Studio下: 编辑->查找和替换 在打开的对话框中,选择文件夹并填写“查找内容”和“替换为”框。 希望这对你有所帮助。

对我来说,为了确保不改变编码(从UTF-8),保持重音…唯一的方法是在之前和之后提到默认编码:

powershell -Command "(gc 'My file.sql' -encoding "Default") -replace 'String 1', 'String 2' | Out-File -encoding "Default" 'My file.sql'"