侧边栏壁纸
  • 累计撰写 185 篇文章
  • 累计创建 77 个标签
  • 累计收到 17 条评论

目 录CONTENT

文章目录

Powershell脚本递归替换文本文件中的内容

码峰
2023-03-21 / 0 评论 / 0 点赞 / 759 阅读 / 524 字 / 正在检测是否收录...
广告 广告

需求

最近写一个CI脚本,需要用PowerShell实现一个替换指定目录及其子目录下的文本文件中的指定关键字,我们可以使用PowerShell中的Get-ChildItem和Select-String命令来搜索指定目录及其子目录中的文本文件并替换其中的关键字。

实现代码

示例脚本代码如下:

# 参数:搜索目录、搜索文件后缀、旧的关键字,新的关键字
param (
  [Parameter(Mandatory=$true)][string]$rootPath,
  [Parameter(Mandatory=$true)][string]$searchPattern,
  [Parameter(Mandatory=$true)][string]$oldKeyword,
  [Parameter(Mandatory=$true)][string]$newKeyword
)

# 搜索所有指定后缀名的文件
$fileList = Get-ChildItem -Path $rootPath -Include $searchPattern -Recurse | Where-Object { !$_.PsIsContainer }

# 遍历每个文件,将关键字替换为新的文本
foreach ($file in $fileList) {
  (Get-Content $file.FullName) | ForEach-Object {
    $_ -replace $oldKeyword, $newKeyword
  } | Set-Content $file.FullName
}

在这个示例脚本中,我们将搜索目录、搜索文件后缀、旧的关键字和新的关键字都作为输入参数传入脚本,并使用[Parameter(Mandatory=$true)]标记来指定这些参数是必须的。然后,我们依然使用Get-ChildItem和ForEach-Object命令来搜索文件和替换关键字,但是这些命令中的变量都被修改为输入参数。

调用脚本

调用这个脚本很简单,首先打开 PowerShell,然后输入以下命令:

.\replace-keyword.ps1 -rootPath "C:\myFolder" -searchPattern "*.txt" -oldKeyword "old text" -newKeyword "new text"

其中replace-keyword.ps1是你保存的脚本文件名,-rootPath指定搜索目录,-searchPattern指定搜索文件后缀,-oldKeyword指定替换的旧关键字,-newKeyword指定替换后的新关键字。
如果你的脚本文件不在当前目录,请使用完整路径来指定。如果有空格的路径,请使用双引号将其括起来。执行完这个命令后,脚本就会开始运行,并搜索并替换指定目录及其子目录中的符合条件的文件中的关键字。

0
广告 广告

评论区