如何自动批量编辑 Win 8.1 目录中的文本文件?
Posted
技术标签:
【中文标题】如何自动批量编辑 Win 8.1 目录中的文本文件?【英文标题】:How can I automate a mass edit of text files located in a Win 8.1 directory? 【发布时间】:2017-09-01 09:17:27 【问题描述】:早安,
在 Win 8.1 下的特定目录中,我有这数百个扩展名为 *.xml 的文本文件,代表一个网站。
在这些文件中的每一个中,都恰好出现了一个具有已知内容的特定标签,例如<tag>old</tag>
。
在所有这些页面中,此特定文本需要替换为<tag>new</tag>
。子目录存在,但不需要检查。
我将如何自动执行此任务? (我不熟悉 PowerShell,我认为我从未使用过它,但这会朝着正确的方向发展吗?如果不是 - 为误导性标签道歉。)
提前致谢!
【问题讨论】:
PowerShell 可用于执行此操作,没有太多困难,但我相当肯定有适用于 Windows 的 *ix 实用程序sed
的实现,虽然我不是很熟悉使用 *ix shell,我很确定这对于 sed
来说是微不足道的。
我查看了它的语法,是的,它非常 *ixish ;) 最后,我选择了 JoeH 的答案,仅仅是因为它可以通过车载方式完成。无论如何,谢谢,杰夫!
【参考方案1】:
试试这个 PowerShell 脚本。
$myFiles=get-childitem C:\Folder *.xml -rec
foreach ($file in $myFiles)
(Get-Content $file.PSPath) |
Foreach-Object $_ -replace "<tag>old</tag>", "<tag>new</tag>" |
Set-Content $file.PSPath
【讨论】:
这个。像魅力一样工作,而且性能也很好。赢得了良好声誉,先生,欢迎您。 确实如此。相当优雅,并再次提醒我,在使用 PowerShell 时,我的一些先入之见是错误的(我的纯 PS 解决方案将涉及一些诡计,以避免在我似乎仍在处理源文件时出现覆盖源文件...... )。 附带说明一下,您可以通过简单地将循环头写为foreach ($file in (Get-ChildItem C:\Folder *.xml -rec))
来避免使用$myFiles
除了 Jeff 的合理化,这是真的:当然,body 的 Foreach-Object 也暗示 每次 出现 "检查replacer.bat
for %%# in (*.xml) do (
call replacer.bat "%%~f#" "<tag>old</tag>" "<tag>new</tag>"
)
【讨论】:
以上是关于如何自动批量编辑 Win 8.1 目录中的文本文件?的主要内容,如果未能解决你的问题,请参考以下文章
我安装了win8 专业版 在激活时出现错误代码0x8007007B 文件名、目录名或卷标语法不正确