【发布时间】:2017-05-22 16:31:01
【问题描述】:
早上好,我是 powershell 的新手。
我一直在搜索如何在某个文件夹中的 .doc、.docx 中找到某个短语,但我找不到我正在寻找的确切解决方案。
例如,当我执行这段代码时
Get-ChildItem 'C:\Users\koshiasu\Desktop\adhocs' -Filter *.sql |Select-String -Pattern "children"
它在我的powershell底部显示如下
结果1
Desktop\adhocs\18722 Parents.sql:11: AND EXISTS (SELECT c.id_number FROM children c
Desktop\adhocs\18722 Parents.sql:38: AND EXISTS (SELECT c.id_number FROM children c
Desktop\adhocs\2969 ADHOC - Parents in Dallas.sql:11: AND EXISTS (SELECT c.id_number FROM children c
Desktop\adhocs\2969 ADHOC - Parents in Dallas.sql:92: AND EXISTS (SELECT c.id_number FROM children c
我想为 .doc、.docx 做同样的事情
所以我像这样更改了代码
Get-ChildItem 'C:\Users\koshiasu\Desktop\ADHOCS_WORD' -Filter *.doc, *.docx |Select-String -Pattern "Allocations"
但错误是
Get-ChildItem : Cannot convert 'System.Object[]' to the type 'System.String' required by parameter 'Filter'. Specified method is not supported.
At line:2 char:58
+ Get-ChildItem 'C:\Users\koshiasu\Desktop\ADHOCS_WORD' -Filter <<<< *.doc, *.docx |Select-String -Pattern "Allocations"
+ CategoryInfo : InvalidArgument: (:) [Get-ChildItem], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgument,Microsoft.PowerShell.Commands.GetChildItemCommand
我应该如何更改代码以显示结果1
非常感谢
【问题讨论】:
-
Get-ChildItem -Filter只接受一种过滤模式,改为使用Get-ChildItem |Where-Object {'.doc','.docx' -contains $_.Extension} |Select-String ...。虽然它可能行不通。.docx文件基本上是 XML 文档的压缩文件夹,我不会尝试对它们使用正则表达式
标签: powershell ms-word