gpt4 book ai didi

powershell - 循环浏览文件夹/文件并替换单词

转载 作者:行者123 更新时间:2023-12-03 01:29:44 24 4
gpt4 key购买 nike

尝试循环浏览包含多个html文件的文件夹/子文件夹,以查找特定的字符串/单词。

一旦powershell脚本找到了它-它会列出哪些文件包含匹配的单词。
可能提示用户替换单词或仅设置变量,例如$ replaceword ='test2'

$match = "THIS IS A TEST"
#$replacement = Read-Host "Please enter a solution name"
$files = Get-ChildItem -path C:\Users\testfolder -filter *THIS IS A TEST* -Recurse
$files
Sort-Object -Descending -Property { $_.FullName }
#Rename-Item -newname { $_.name -replace $match, $replacement } -force
$files = Get-ChildItem -path C:\Users\testfolder -include *.html -Recurse
foreach($file in $files)
{
((Get-Content $file.fullname) -creplace $match)
read-host -prompt "Done! Press any key to close."
}

最佳答案

您可以执行以下操作,这将替换.html目录结构中C:\Users\testfolder文件的匹配内容:

$matchString = 'THIS IS A TEST'
$replaceString = 'New String'
$files = Get-ChildItem -Path 'C:\Users\testfolder' -filter *.html -Recurse
foreach ($file in $files) {
$matchFound = $false
$output = switch -regex -file $file.fullname {
$matchString { $_ -replace $matchString,$replaceString
$matchFound = $true
}
default { $_ }
}
if ($matchFound) {
$output | Set-Content $file.fullname
}
}

如果您确实希望交互式提示替换字符串,则可以将 $replaceString移动到脚本逻辑内的其他位置,并添加 Read-Host命令。

说明:

脚本的顶部包含 $matchString(您要匹配的区分大小写的字符串)和 $replaceString(替换字符串)。
Get-ChildItem使用 -Filter查找以HTML扩展名结尾的所有文件。 -Recurse开关用于从路径搜索所有子目录。

使用switch语句支持 Get-Content,因为它通常执行得更快。我们只想在找到匹配项时覆盖文件。 $matchFound$false开头,当找到匹配项时将变为 $true

此处使用了 -creplace,因为您的源代码已使用它。 -creplace执行区分大小写的正则表达式匹配和替换。

交互式替代项:

对于交互式元素,可以在每次找到匹配项时要求用户输入替换字符串。这只是将 $replaceString分配移到 switch语句内部,并列出包含匹配项的文件。
$matchString = 'THIS IS A TEST'
$files = Get-ChildItem -Path 'C:\Users\testfolder' -filter *.html -Recurse
foreach ($file in $files) {
$matchFound = $false
$output = switch -regex -file $file.fullname {
$matchString { $replaceString = Read-Host -Prompt "$($file.fullname) contains '$matchString'. Enter your replacement string"
$_ -replace $matchString,$replaceString
$matchFound = $true
}
default { $_ }
}
if ($matchFound) {
$output | Set-Content $file.fullname
}
}

关于powershell - 循环浏览文件夹/文件并替换单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59456516/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com