我正在使用Windows命令行环境编写一个批处理文件脚本,并希望更改文件中每次出现的一些文本(例如。“FOO”)和另一个(ex。“酒吧”)。最简单的方法是什么?有内置函数吗?
当前回答
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
其他回答
对我来说,为了确保不改变编码(从UTF-8),保持重音…唯一的方法是在之前和之后提到默认编码:
powershell -Command "(gc 'My file.sql' -encoding "Default") -replace 'String 1', 'String 2' | Out-File -encoding "Default" 'My file.sql'"
在Visual c++下编写代码时,我曾多次遇到过这个问题。 如果你有它,你可以使用Visual studio查找和替换实用程序。它允许您选择一个文件夹,并用您想要的任何其他文本替换该文件夹中任何文件的内容。
在Visual Studio下: 编辑->查找和替换 在打开的对话框中,选择文件夹并填写“查找内容”和“替换为”框。 希望这对你有所帮助。
看看是否有任何类似于cmd.exe的sed实用程序,它要求在Windows下的sed等效,应该也适用于这个问题。执行概要:
它可以在批处理文件中完成,但它并不漂亮 如果你有足够的时间安装或复制一个exe文件,很多可用的第三方可执行文件都可以帮你完成 可以用VBScript或类似的东西,如果你需要能够运行在Windows盒子没有修改等。
下载Cygwin(免费)并在Windows命令行中使用类unix命令。
您最好的选择:sed
提供搜索和替换函数的两个批处理文件已经由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提示符中使用。
它们都有不区分大小写的开关和许多其他功能。
推荐文章
- 如何验证批处理文件中是否存在一个文件?
- 如何循环通过文件匹配通配符在批处理文件
- 异步运行Windows批处理文件命令
- 我怎么能显示线在公共(反向差异)?
- XAMPP -端口80被PID 4的“无法打开进程”使用!12
- Git显示“警告:永久添加到已知主机列表”
- Awk不打印换行符
- 为什么git在Windows下记不住我的密码
- Git克隆/拉不断冻结在“存储密钥在缓存?”
- 如何在文本文件中替换${}占位符?
- 如何在批处理文件中请求管理员访问
- 有没有替换Windows (Visual C)的unistd.h ?
- 如何在Mac OS Lion上从命令行启动MySQL服务器?
- 从Windows批处理文件设置系统环境变量?
- 递归复制文件夹,不包括一些文件夹