在Powershell中匹配运算符后重新获取路径属性
所以,我已经为下面的代码工作了一段时间,我在这里得到了一些很大的帮助,我对此表示感谢。此代码将打开Word或文本文档,拉出特定模式,然后返回数字。现在,我遇到的唯一问题是,在使用match操作符之后,我无法找出如何返回实际的文件名和完整路径。我只剩下与范围相匹配的实际数字。任何帮助都将不胜感激在Powershell中匹配运算符后重新获取路径属性,powershell,Powershell,所以,我已经为下面的代码工作了一段时间,我在这里得到了一些很大的帮助,我对此表示感谢。此代码将打开Word或文本文档,拉出特定模式,然后返回数字。现在,我遇到的唯一问题是,在使用match操作符之后,我无法找出如何返回实际的文件名和完整路径。我只剩下与范围相匹配的实际数字。任何帮助都将不胜感激 $SearchStandard = @('[0-9]{3}-[0-9]{2}-[0-9]{4}' ) $NOMATCH = @('235-[0-9]{2}-[0-9]{4}') $NOMATCH2 = @
$SearchStandard = @('[0-9]{3}-[0-9]{2}-[0-9]{4}' )
$NOMATCH = @('235-[0-9]{2}-[0-9]{4}')
$NOMATCH2 = @('[0-9]{3}-[0-9]{3}-[0-9]{4}')
$Word = New-Object -ComObject Word.Application
$allword = Get-childitem -recurse *.docx , *.txt
$newobj = New-Object -com word.application
Foreach ($wd in $allword) {
$docu = $newobj.Documents.Open($wd.fullname, $false, $true)
$docu.Paragraphs | ForEach-Object {
ForEach ($SearchText in $SearchStandard) {
$_.Range.Text | Where-Object {($_ -match $SearchText) -and ($_-notmatch $NOMATCH) -and ($_-notmatch $NOMATCH2)}
}
}
}
您可以使用计算属性引用
$wd.FullName
:
$_.Range.Text | Where-Object {
($_ -match$SearchText) -and
($_-notmatch $NOMATCH) -and
($_-notmatch $NOMATCH2)
} | Select-Object @{Label='Number';Expression={$_}},@{Label='Path';Expression={$wd.FullName}}
只是一个友好的暗示:如果你感谢你收到的巨大帮助,考虑接受过去解决了你的问题的答案,点击适当答案左边的复选标记,你应该首先做适当的缩进。由于您第一次匹配$SearchStandard,$NOMATCH2没有意义,因为它们的位置不同。@LotPings
-match
v-notmatch
'153-54-8645'将满足所有三个条件,而'1503-54-8645'将匹配$SearchText
,但也匹配$NOMATCH2
,因此不应出现through@MathiasR.Jessen$NOTMATCH2
在第一个连字符后有3个数字,这是我的提示。谢谢Mathias和LotPings。马蒂亚斯,事实上,我将开始点击复选标记。此外,是的,一行中可能有多个数字。