我在使用where命令时遇到问题。我必须在C:\ Program Files文件中搜索特定的exe文件并输出它的路径。
答案 0 :(得分:1)
这是一个脚本,可以按照您的需要做:
Get-ChildItem -Path $env:ProgramFiles -Recurse -Filter '*.exe' -ErrorAction SilentlyContinue | Where-Object {$_.FullName -like '*git*'} | Select-Object FullName
Get-ChildItem
列出给定路径下的所有文件和文件夹-Path $env:ProgramFiles
将值从环境变量“ ProgramFiles”(即程序文件目录的路径)发送到Get-ChildItem
的Path参数-Recurse
表示要包含子文件夹(一直向下)。-Filter '*.exe'
说只返回扩展名为.exe的文件。-ErrorAction SilentlyContinue
说:“如果发生某些问题(例如,您无权访问文件夹),则不会抛出错误消息;请继续进行下去。” |
是管道字符,表示将当前命令的每个输出发送到下一个命令的管道输入。即在这种情况下,Get-ChildItem
返回了一堆FileSystemInfo
对象,这些对象被逐个传递给Where-Object
以进行过滤。Where-Object
计算布尔表达式;评估为true
的所有事物都会通过管道进行;导致false
的所有内容都会被所有其他操作阻止/忽略。{$_.FullName -like '*git*'}
是要评估的条件。 $_
是当前管道变量;即从Get-ChildItem
命令的输出传递的每个FileSystemInfo对象。 FullName
是要表示的文件/文件夹的完整路径(例如"c:\program files\something\somethingelse\file.exe"
。-like '*git*'
说“返回路径中包含完整文本git
的所有值(即*
是通配符。| Select-Object FullName
然后获取Where-Object
传递的结果(即符合条件的结果),并从这些对象返回单个属性FullName
;因此您将获得exe路径的列表,而不是从FileSystemInfo对象中描述它们的所有属性。完整的PowerShell文档可以在这里找到:https://docs.microsoft.com/en-us/powershell/
要获取有关任何特定命令的帮助,请键入Get-Help command
,例如Get-Help Get-ChildItem
。