【发布时间】:2016-09-17 18:49:33
【问题描述】:
我正在尝试对 Powershell 中的多个 word 文档进行查找替换。我要替换的字符串格式为:
@XXXXXXX
X 是字母数字字符(这是我们系统中合并字段的样子)。
我用作要查找的文本的字符串是:
"\@*"
我假设它是以 @ 开头的任何内容,后跟多个字符。反斜杠充当 Word 中通配符 @ 的转义字符。
这只是替换文档中的@符号,并忽略它后面的字符。
如何设置搜索词以尊重 @ 及其后面的字符并将它们全部替换?
当前形式的完整脚本是:
$list = Get-ChildItem "H:\Quick Report Replace" -Include *.xml -recurse
$objWord = New-Object -ComObject word.application
$objWord.Visible = $False
foreach ($foo in $list) {
$objDoc = $objWord.Documents.Open("$foo")
$objSelection = $objDoc.Selection
$findtext= "\@*"
$ReplaceText = "_______________"
$ReplaceAll = 2
$FindContinue = 1
$MatchFuzzy = $False
$MatchCase = $False
$MatchPhrase = $false
$MatchWholeWord = $False
$MatchWildcards = $True
$MatchSoundsLike = $False
$MatchAllWordForms = $False
$Forward = $True
$Wrap = $FindContinue
$Format = $False
$objSelection.Find.execute(
$FindText,
$MatchCase,
$MatchWholeWord,
$MatchWildcards,
$MatchSoundsLike,
$MatchAllWordForms,
$Forward,
$Wrap,
$Format,
$ReplaceText,
$ReplaceAll
)
If ($objSelection.Find.Found)
{
Write-Host("The search text was found.") } Else {
Write-Host("The search text was not found.") }
$objDoc.close()
}
【问题讨论】:
标签: powershell wildcard