我正在尝试使用Select-String
在docx文件中找到商标符号 - 符号的Unicode为0x00AE
,但正则表达式(在RegExpal中有效){{1} }不起作用
我试过这个简单的事情:
\u00AE
我有点新手并且会感激任何帮助。
答案 0 :(得分:4)
问题在于Select-String
(documentation)在纯文本文件中搜索字符串。
DOCX文件不是纯文本,而是ZIP容器中的一堆XML文件。它是一个二进制文件,由于压缩甚至不包含文档文本中的字符。
你可能想要的是一个可以读取OOXML文档的库;然后,您将搜索库返回的文本。
特别是,请查看Codeplex上Select-OpenXmlString
项目的Power Tools for Open XML命令。 This blog post给出了说明和用法示例:
Select-OpenXmlString [...]具有与PowerShell附带的Select-String cmdlet类似的功能。
特别是,使用它来搜索"\u00AE"
,
您可以使用Select-OpenXmlString的-List参数来检索具有特定内容的所有文档的列表。在这个目录中,我有很多Open XML文档,并希望找到所有提到法国的文档。
Select-OpenXmlString *.docx -simpleMatch France -List | Select-Object Filename