在Powershell中使用冒号、双引号和空格查找和替换字符串

new9mtju  于 2023-11-18  发布在  Shell
关注(0)|答案(1)|浏览(151)

我使用Get-Content -Replace来查找和替换一个字符串,如下所示:
从:"文件夹":"AAAAAA",
收件人:
"文件夹":"BBBBBB",
AAAAAA和BBBBBBB将是变量row.CurrentFolderrow.NewFolder
我试过很多组合,但没有一个有效,我在逃避":"或者它可能是空格的问题。我不确定。
错误:表达式或语句中存在意外的标记":"。
尝试这些:

((Get-Content "$($outputdir)\$($row.NewFolder).$outputext" -Raw) -Replace "$($row.CurrentFolder)","$($row.NewFolder)") | Set-Content "$($outputdir)\$($row.NewFolder).$outputext"

字符串
这有一个缺陷,它将替换所有的row.CurrentFolder示例
请建议

huwehgph

huwehgph1#

也许这个能帮到你
要将字符串“Folder”:“AAAAAA”的特定示例替换为“Folder”:“BBBBBB”,您需要小心PowerShell中特殊字符的转义。以下是如何实现此操作的示例:

# Read the content of the file and replace the string
$content = Get-Content "$($outputdir)\$($row.NewFolder).$outputext" -Raw
$newContent = $content -replace ('"Folder": "{0}",' -f [regex]::Escape($row.CurrentFolder)), ('"Folder": "{0}",' -f $row.NewFolder)

# Write the updated content back to the file
$newContent | Set-Content "$($outputdir)\$($row.NewFolder).$outputext"

字符串
在此脚本中,-f操作符用于字符串格式化,[regex]::Escape方法用于转义字符串中的任何特殊字符。这样,替换过程应该正确工作,而不会出现与特殊字符相关的问题。请确保将文件路径和文件扩展名变量替换为实际值。

相关问题