powershell - 寻找通配符字符串,然后将其写入输出
问题描述
我最近开始了我的 Powershell 之旅,我编写了代码,可以在一组 word 文档中搜索关键字(或短语)并将文档名称导出到 txt 文件。现在我想知道我是否能够搜索一个短语,例如:“wait * days”,然后将完整的短语“wait 10 days”输出到一个 txt 文件。我目前拥有的代码简要总结为:
如果你能指出我正确的方向或告诉我从哪里开始编写这个程序,我将不胜感激。谢谢!
正如您在下面看到的,我已经编写了几乎所有用于在文档中查找关键字的代码。我所需要的只是关于允许我将查找通配符短语写入 txt 文件的函数的方向。
$keyword = 'SOMETHING'
$source = 'C:\somepath'
$word = New-Object -ComObject Word.Application
$docs = Get-ChildItem -Path $source | Where-Object {$_.Name -like '*.doc*'}
{
if ($word.Documents.Open($doc.FullName).Content.Find.Execute($keyword))
{
#Output Code
}
$word.Application.ActiveDocument.Close()
}
目前,该代码可以打开和读取 microsoft word 文档并将文档写入输出文件。虽然我希望将通配符搜索的结果写入输出。显然,堆栈溢出并不是要为您编写代码。因此,任何方向,甚至让我知道这是否可能在 powershell 中都将不胜感激。
解决方案
我能想到的唯一方法是拉身体,然后用它-match
来找到你要找的东西。
有财产Find.MatchWildcards
。但是,我无法让它按预期工作。 Find.MatchWildcards
例子。获取以“wait”开头并以“days”结尾的字符串:
#looking for wait X days
#regex for wildcard
$keyword = '(wait).*(days)'
$source = 'C:\somepath'
$word = New-Object -ComObject Word.Application
$word.Visible = $False
$docs = Get-ChildItem -Path $source | Where-Object {$_.Name -like '*.doc*'}
$results = @{}
foreach($doc in $docs)
{
#open read only
$document = $word.Documents.Open($doc.FullName,$false,$True)
$body = $document.content
#use Regex
if($body.Text -match "$keyword")
{
#Example of action write to file each time there is a match
$Matches[0] | out-file "C:\IndividualMatch.txt" -Append
$properties = @{
File = $doc.FullName
Match = $keyword
CompleteMatch = $Matches[0]
}
#store to results
$results += $properties
}
$word.Application.ActiveDocument.Close()
}
if($results)
{
#if there are matches... do action -- output to text
$results.CompleteMatch | Out-File "C:\test.txt"
}
else
{
Write-Host "Cant find"
}
#clean up com object
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($word) | Out-Null
推荐阅读
- c# - 将二进制文件中的类型反序列化到不同应用程序中的不同命名空间(C# .NET)
- android - 安装 APK 文件时解析错误
- swift - 将 Int JSON 值转换为 String 枚举大小写
- javascript - 为什么在条件条件后出现“意外返回”错误?
- wordpress - WordPress 网站无缘无故切换到显示帖子
- python - 检测 Python 是否在 Conda 环境中运行
- php - 如何通过拥有他的令牌来获取有关用户的信息
- python - 如何使用 tkinter(python)使每个按钮在单击时显示不同的图像
- mysql - 如何连接变量以在 mysql 查询中形成日期时间对象
- c++ - QTextEdit“预分配”画布大小