使用 PowerShell 替换文件中的文本
PowerShell 是一个强大的工具,可以执行不同的文件和文件夹操作。它允许你创建、复制、删除、移动、重命名和查看系统上的文件和文件夹。
PowerShell 有一些有用的 cmdlet,可以读取、写入和替换文件中的内容。本教程将介绍使用 PowerShell 替换文件中出现的每个字符串的不同方法。
在 PowerShell 中使用 Get-Content
和 Set-Content
替换文件中每个出现的字符串
Get-Content
获取指定路径中的项目内容,例如文件中的文本。Set-Content
是一个字符串处理 cmdlet,允许你编写新内容或替换文件中的现有内容。
你可以使用 Get-Content
和 Set-Content
cmdlet 替换文件中出现的每个字符串。我们在目录 (C:\New
) 中有一个文本文件 (test.txt
),其内容如下。
Get-Content C:\New\test.txt
输出:
Welcome to Linux tutorials.
Linux is free.
Linux is powerful.
现在,让我们借助 -Replace
参数在 test.txt
文件中用 PowerShell
替换字符串 Linux
的所有出现。Get-Content
周围需要括号 ()
。
(Get-Content C:\New\test.txt) -Replace 'Linux', 'PowerShell' | Set-Content C:\New\test.txt
然后查看 test.txt
文件的内容以验证更改。
Get-Content C:\New\test.txt
如你所见,Linux
已成功替换为 PowerShell
。
输出:
Welcome to PowerShell tutorials.
PowerShell is free.
PowerShell is powerful.
此方法使用字符串数组来查找和替换文件中的字符串,因为 Get-Content
cmdlet 返回一个数组。如果 Get-Content
返回单个字符串,则更容易替换字符串。
你可以使用 -Raw
参数,如下所示。
(Get-Content C:\New\test.txt -Raw) -Replace 'Linux', 'PowerShell' | Set-Content C:\New\test.txt
在 PowerShell 中使用 File
类替换文件中每个出现的字符串
File
类为常见操作提供静态方法,例如创建、复制、移动、打开、删除和附加到单个文件。使用 File
类的 Replace()
方法替换指定文件的内容。
Get-Content C:\New\python.txt
Find the best Python tutorials and learn Python easily from DelftStack.
这是一个使用 File
类方法替换文件中每次出现的字符串的示例。
$string = [System.IO.File]::ReadAllText("C:\New\python.txt").Replace("Python","JavaScript")
[System.IO.File]::WriteAllText("C:\New\python.txt", $string)
ReadAllText()
方法打开一个文本文件,读取该文件中的所有文本,然后关闭该文件。
WriteAllText()
方法创建一个新文件,将特定字符串写入文件,然后关闭文件。如果目标文件已存在于该位置,则会被覆盖。
验证在 C:\New\python.txt
中所做的更改。
Get-Content C:\New\python.txt
输出:
Find the best JavaScript tutorials and learn JavaScript easily from DelftStack.
使用 PowerShell 替换多个文件中每个出现的字符串
上述方法替换单个文件中的字符串;有时,你可能需要替换多个文件中的相同字符串。在这种情况下,你可以使用以下命令替换多个文件中每次出现的指定字符串。
Get-ChildItem 'C:\New\*.txt' | ForEach {
(Get-Content $_) | ForEach {$_ -Replace 'weekly', 'monthly'} | Set-Content $_
}
Get-ChildItem
cmdlet 获取指定目录 C:\New
中的文件。星号 *
通配符指定所有文件扩展名为 .txt
的文件。
在 ForEach
循环中,你可以对数组中的每个项目运行一个或多个命令。
你可以使用 -Recurse
参数替换指定目录及其子目录中文件中的字符串。
Get-ChildItem 'C:\New\*.txt' -Recurse | ForEach {
(Get-Content $_) | ForEach {$_ -Replace 'weekly', 'monthly'} | Set-Content $_
}
相关文章
在 Windows PowerShell 中获取命令行参数
发布时间:2024/03/04 浏览次数:358 分类:编程语言
-
本文将解释我们如何使用 PowerShell 的参数函数处理命令行参数,参数如何工作,我们如何使用 PowerShell 参数将值传递给参数,以及定义参数的基本方法是什么。
Windows PowerShell 中的 Base64 编码
发布时间:2024/03/04 浏览次数:332 分类:编程语言
-
本文将展示如何编码和解码 base64 字符串。Windows PowerShell 当前版本没有本机命令,因此我们将向你展示如何执行此操作的替代方法。
在 Windows PowerShell 中写入输出
发布时间:2024/03/04 浏览次数:259 分类:编程语言
-
本文将向你展示如何在 Windows PowerShell 中编写或打印输出。本文还将区分多个 write cmdlet 并解释它们的意义。
在 Windows PowerShell 中设置 PATH 环境变量
发布时间:2024/03/04 浏览次数:350 分类:编程语言
-
本文将展示在 Windows PowerShell 中设置路径环境变量的正确方法。本文还展示了如何在持久性和非持久性方法中设置变量。
在 Windows PowerShell 中打印环境变量
发布时间:2024/03/04 浏览次数:869 分类:编程语言
-
本文将讨论什么是环境变量以及如何使用多个 Windows PowerShell 命令打印它们。
在 PowerShell 中注释代码
发布时间:2024/03/04 浏览次数:363 分类:编程语言
-
本文将展示在 Windows PowerShell 中注释代码的多种方法。本文还介绍了注释代码时的一些最佳实践。
在 PowerShell 中执行 LDAP 查询
发布时间:2024/03/04 浏览次数:304 分类:编程语言
-
本文将深入了解如何使用 Active Directory 过滤器和 LDAP 过滤器。