我需要查找name.dll
具有版本号的1.1.1
文件Windows 8
。是否可以根据字段FIle version
和进行搜索Product version
?
答案1
通用搜索工具(例如 Explorer 或 Charms Bar 内置的搜索工具)实际上不支持此类高级查询。但是,PowerShell(Windows 7 及更高版本也内置了该功能)完全可以处理这项任务。
在 PowerShell 中,文件对象有一个名为的属性VersionInfo
,其中包含包含您要过滤的数据的子属性。一旦您知道如何引用这些属性,构建一个基于它们搜索文件的脚本就相当简单了。
对于 C:\ 上所有名为“name.dll”且文件版本为“1.1.1”的文件,请执行以下操作:
Get-ChildItem C:\ -Include name.dll -Recurse | Where-Object {$_.VersionInfo.FileVersion -eq '1.1.1'}
对于 C:\ 上所有名为“name.dll”且产品版本为“1.1.1”的文件,执行以下操作:
Get-ChildItem C:\ -Include name.dll -Recurse | Where-Object {$_.VersionInfo.ProductVersion -eq '1.1.1'}
对于 C:\ 上名为“name.dll”且文件版本或产品版本为“1.1.1”的文件,请执行以下操作:
Get-ChildItem C:\ -Include name.dll -Recurse | Where-Object {$_.VersionInfo.FileVersion -eq '1.1.1' -or $_.VersionInfo.ProductVersion -eq '1.1.1'}
请记住,仅当文件版本或产品版本的值匹配时,这些才会匹配确切地等于字符串“1.1.1”。有关如何以其他方式使用这些命令的信息,包括基于其他条件或使用正则表达式进行匹配的能力,您应该使用以下命令查看一些内置帮助文档:
Get-Help Get-ChildItem -Detailed
Get-Help Where-Object -Detailed
Get-Help about_Comparison_Operators
Get-Help about_Operators
Get-Help about_Regular_Expressions
答案2
我知道这是一篇“旧”帖子,但可以在 Windows 搜索中按文件版本搜索文件。
打开资源管理器窗口,进入您想要搜索的基本目录,例如 C:\windows。在搜索框中输入 [fileName].[ext] AND system.fileversion: <= 1.1.1.1(或您有的任何版本要求)。
您可以将通配符与 BOOLEAN 运算符结合使用作为搜索参数。请参阅以下 Microsoft 网站以获取一些建议。请注意,提供的列表不是完整列表,因此我不得不猜测是否可以搜索“System.fileversion” http://windows.microsoft.com/en-us/windows7/advanced-tips-for-searching-in-windows
下面是我从网络资源文件夹中执行的一个示例:
system.filename:~=AmazingCharts AND system.filename:~>exe AND system.fileversion:~=6.7.0
- 第一个参数搜索文件名值中包含单词“AmazingCharts”的所有文件。
- 第二个参数隔离搜索所有以 exe 结尾的文件
- 第三个参数进一步将搜索结果过滤为包含 6.7.0 的值。
我确实注意到这个过程的搜索结果很慢。