我正在使用Windows命令行环境编写一个批处理文件脚本,并希望更改文件中每次出现的一些文本(例如。“FOO”)和另一个(ex。“酒吧”)。最简单的方法是什么?有内置函数吗?
当前回答
用replace .bat
1)用e?选项,将计算特殊字符序列,如\n\r和unicode序列。在这种情况下,将替换引用的“Foo”和“Bar”:
call replacer.bat "e?C:\content.txt" "\u0022Foo\u0022" "\u0022Bar\u0022"
2)直接替换没有引用的Foo和Bar。
call replacer.bat "C:\content.txt" "Foo" "Bar"
其他回答
下载Cygwin(免费)并在Windows命令行中使用类unix命令。
您最好的选择:sed
可能有点晚了,但我经常在寻找类似的东西,因为我不想经历让软件被批准的痛苦。
但是,您通常以各种形式使用FOR语句。有人创建了一个有用的批处理文件来进行搜索和替换。请看这里。重要的是要理解所提供的批处理文件的局限性。由于这个原因,我没有复制这个答案中的源代码。
在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'"
dostips.com上的BatchSubstitute.bat是一个使用纯批处理文件进行搜索和替换的示例。
它使用FOR、FIND和CALL SET的组合。
包含“&<>]|^”字符的行可能会被错误处理。
推荐文章
- 如何合并2 JSON对象从2个文件使用jq?
- 如何运行一个PowerShell脚本而不显示窗口?
- PowerShell:仅为单个命令设置环境变量
- 为什么这个Windows批处理文件只执行第一行,而在命令shell中执行所有三行?
- 如何将文件内容读入批处理文件中的变量?
- 如何触发命令行PHP脚本的XDebug分析器?
- 环境变量存储在Windows注册表的哪里?
- 有一个好的Valgrind Windows的替代品吗?
- Maven命令行如何指向特定的settings.xml为单个命令?
- Windows和Linux上的c++编译:ifdef开关
- 如何验证批处理文件中是否存在一个文件?
- 如何循环通过文件匹配通配符在批处理文件
- 异步运行Windows批处理文件命令
- 我怎么能显示线在公共(反向差异)?
- XAMPP -端口80被PID 4的“无法打开进程”使用!12