我正在使用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"
其他回答
我在这里摆弄了一些现有的答案,更喜欢我改进的解决方案……
type test.txt | powershell -Command "$input | ForEach-Object { $_ -replace \"foo\", \"bar\" }"
或者如果您想再次将输出保存到文件中…
type test.txt | powershell -Command "$input | ForEach-Object { $_ -replace \"foo\", \"bar\" }" > outputFile.txt
这样做的好处是可以从任何程序输入输出。我们也将研究如何使用正则表达式。不知道如何把它变成一个BAT文件,以便更容易使用…:-(
还可以在https://zoomicon.github.io/tranXform/上看到Replace和ReplaceFilter工具(包括源代码)。第二个是过滤器。
替换文件字符串的工具在VBScript中(需要Windows脚本主机[WSH]才能在旧的Windows版本中运行)
除非你用最新的Delphi(或FreePascal/Lazarus)重新编译,否则过滤器可能无法使用Unicode。
dostips.com上的BatchSubstitute.bat是一个使用纯批处理文件进行搜索和替换的示例。
它使用FOR、FIND和CALL SET的组合。
包含“&<>]|^”字符的行可能会被错误处理。
提供搜索和替换函数的两个批处理文件已经由Stack Overflow成员dbenham和aacini使用Windows中的本机内置jscript编写。
与普通批处理脚本相比,它们在处理大文件时既健壮又非常迅速,而且用于基本的文本替换也更简单。它们都有Windows正则表达式模式匹配。
类似于此的帮助批处理文件称为repl.bat(由dbenham编写)。 使用L文字开关的例子: This is FOO here|repl "FOO" "BAR" L Echo和一个文件: type "file.txt" |repl "FOO" "BAR" L >"newfile.txt" 这个类似grep的帮助批处理文件称为findrepl.bat(由aacini编写)。 激活正则表达式的示例: This is FOO This |findrepl "FOO" "BAR" Echo和一个文件: type "file.txt" |findrepl "FOO" "BAR" >"newfile.txt"
当将它们放在路径上的文件夹中时,它们都将成为强大的系统范围实用程序,或者可以在与批处理文件相同的文件夹中使用,或者从cmd提示符中使用。
它们都有不区分大小写的开关和许多其他功能。
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
推荐文章
- 如何在文本文件中替换${}占位符?
- 如何在批处理文件中请求管理员访问
- 有没有替换Windows (Visual C)的unistd.h ?
- 如何在Mac OS Lion上从命令行启动MySQL服务器?
- 从Windows批处理文件设置系统环境变量?
- 递归复制文件夹,不包括一些文件夹
- 如何使Python脚本在Linux中像服务或守护进程一样运行
- 在批处理文件中处理子字符串的最佳方法是什么?
- 在Sublime Text 2中使用Ctrl+D进行多个选择时,我如何跳过匹配?
- #定义WIN32_LEAN_AND_MEAN具体排除了什么?
- 如何使用文件的行作为命令的参数?
- 如何添加一个设置路径只执行批处理文件?
- 最好的轻量级web服务器(只有静态内容)的Windows
- npm犯错!错误:EPERM:操作不允许,重命名
- 崇高的文本从命令行