在多个批处理文件中查找和替换
Posted
技术标签:
【中文标题】在多个批处理文件中查找和替换【英文标题】:find and replace in multiple batch files 【发布时间】:2013-09-08 12:58:19 【问题描述】:我在一个文件夹中有超过 1000 个批处理文件。
有没有办法运行脚本来查找特定的文本字符串(比如说 Apples)并在所有文件中用 (Mangos) 替换 Apples?
提前致谢
雪
【问题讨论】:
查看“瑞士锉刀”:stahlworks.com/dev/swiss-file-knife.html 检查这个:findandreplace.codeplex.com/documentation。我知道这是一个老问题,但 Google 把我带到了这里,我无法看到一个好的答案。 【参考方案1】:您可以使用 Sublime Text(这是一个免费的无限制评估)来“查找 > 在文件中查找”。查找和替换选项将出现在底部。在“查找:”中输入“苹果”,在“位置”中输入您的位置,在“替换”中输入“芒果”,然后单击“替换”。祝你好运!
【讨论】:
谢谢伙计,我想知道是否有不需要任何第三方软件的解决方案?? @Shei7141 然后不要将其标记为已解决。人们在寻找帮助解决的问题时通常会忽略已解决的问题:-) 原因,我标记它已解决只是因为这个程序可以解决问题....但你是对的......现在没有标记....如果有人知道一个很棒的脚本....我可以查找和替换一个文件....但似乎无法在指定文件夹中的所有文件上运行全局查找和替换... 多么棒的功能和漂亮的设计!【参考方案2】:您可以在 *** 中找到许多示例,以使用纯 batch-script
进行操作。
在这里查看replace
部分:How to replace string inside a bat file with command line parameter string
或在这里:How can you find and replace text in a file using the Windows command-line environment?
在这里:Loop through file names in a Batch Script
在这里:Iterate all files in a directory using a 'for' looploop
over 目录中的文件....
这些只是一些,但还有更多。
现在如果您可以考虑使用第三方软件... ...我不能没有推荐WinGrep for Windows,非常非常有用,当然,自动替换搜索结果(也是正则表达式搜索)
祝你好运
[编辑](我添加这个是因为 st2 是公认的解决方案) 我也是 SublimeText 用户,对我来说,ST2 + winGrep + DiffMerge 这是 Windows 下开发的绝佳三重奏。
【讨论】:
【参考方案3】:有一个非常简单的解决方案,它使用 FOR 循环和 hybrid JScript/batch utility called REPL.BAT。该实用程序是纯脚本,可以在从 XP 开始的任何现代 Windows 机器上运行 - 不需要 3rd 方可执行文件。它在标准输入上执行正则表达式搜索和替换,并将结果写入标准输出。
假设 REPL.BAT 在您的当前目录中,或者更好的是,在您的 PATH 中的某个位置:
for %%F in (*.bat) do (
type "%%F"|repl Apples Mangos >"%%F.new"
move /y "%%F.new" "%%F"
)
REPL.BAT 有许多选项,使得它对于这么少的代码非常强大。脚本中内置了完整的文档。
【讨论】:
戴夫,普通的 for 循环会处理一些文件两次。需要 for /F。 @foxidrive - 你确定吗?这会让我感到惊讶,尽管我还没有测试过。我想既然修改后的文件与原始文件同名,它永远不会重新处理。 我刚刚对其进行了测试,它不会重新处理相同的文件名 - 它工作正常。【参考方案4】:最终在批处理编程时安装和使用Notepad++ 来实现 OP 相同的目标。
加载 Notepad++,然后 Ctrl+H,Find in Files
选项卡,然后像这样填写字段并点击 Replace in Files
按钮。
【讨论】:
以上是关于在多个批处理文件中查找和替换的主要内容,如果未能解决你的问题,请参考以下文章