需要知道如何使用 PowerShell 读取文本文件并替换文本吗?这就是我们所称的 PowerShell 读取文本文件。
不用再找了!这篇博文就是为你准备的。在本文末尾,我将向你展示一个我创建的函数,让你的生活变得更加轻松。
使用 PowerShell 替换文件中的文本是一个包含三个步骤的过程。
- 读取文件
- 查找并替换字符串
- 将更改写入文件。
读取文件
首先,你需要读取文件。让我们首先使用 Set-Content
cmdlet 创建一个文件,这样我们就有一个可以操作的文件了。
要读取这个文件,你可以使用 Get-Content
命令。你可以通过将文本文件路径提供给 Path
参数来读取文件,如下所示。
查找并替换字符串
现在,我们已经将文件的内容存储在内存中的一个字符串中,我们需要查找并替换字符串。一种方法是使用 -replace
操作符。这个 PowerShell 操作符可以找到一个字符串并将其替换为另一个字符串。
使用示例文件内容,我们可以提供搜索字符串 foo 和替换字符串 bar,这应该会使文件内容变为 foo foo baz。
写入文件
现在我们已经将新的文件内容保存在$newContent
中,我们现在需要将这个新内容写回文件。一种方法是使用Set-Content
命令。
Set-Content
命令用新值替换文件的所有内容。
现在当你用Get-Content
读取C:\file.txt文件时,你会发现它现在包含了新的内容。
处理打开的文件句柄
之前你走过的步骤……大多数情况下都有效。然而,在现实世界中,情况并不总是如此。
你会发现偶尔需要处理已经被PowerShell打开的文件。这会阻止你将新内容写回文件。
为了解决这个打开文件句柄的情况,我创建了一个简单的工作流程,允许你首先在磁盘上创建一个临时文本文件,带有新内容,然后删除原始文件,最后重命名临时文件。
以下是它的工作原理示例:
下面是一个我构建的函数的示例,名为Find-InTextFile
,它使用这种方法结合在文件中查找(而不是替换)文本的能力。
这个函数还使用更强大的正则表达式语法来查找字符串。你会发现正则表达式可以让你使用特殊字符如单引号、特殊字符等更灵活地进行搜索。
你还可以看到我正在使用一个foreach循环来一次处理多个文件。如果你有一堆文件需要处理,这会很方便。
资源
有关Set-Content
命令的更多信息,请查看Set-Content:使用 PowerShell 写入文件的方式,或者写入文件内容的另一种方式,使用Out-File
命令。
Source:
https://adamtheautomator.com/powershell-read-text-file/