在永远不相同的文件夹中搜索文件
Search for file in a folder that is never the same
我要做的是:
在 "c:\Program Files\" 中,我必须搜索一个 .exe 文件,然后收集该文件的版本。
目前,我坚持使用 .exe 搜索。我这样做是为了知道,但没有显示输出:
Get-ChildItem -Path C:\Pr*\ -Filter SymCorpUI.exe -Recurse | % {Write-Host $_.FullName}
我知道如何收集版本:
[System.Diagnostics.FileVersionInfo]::GetVersionInfo("PATH OF THE FILE\ccc.exe").FileVersion
也许搜索的结果应该放在一个变量中,然后可以在 getVersionInfo 部分中检索内容,但我完全卡住了。
关于如何实现此目标的任何想法/想法?
非常感谢您的帮助:D
大功告成,只需将 Get-ChildItem
的输出存储到变量中即可。这将是一个 FileInfo
对象数组,因此您需要遍历它们以提取您想要的信息,这将是 fullname
属性:
$f = Get-ChildItem -Path C:\Pr*\ -Filter SymCorpUI.exe -Recurse
$f | % { [System.Diagnostics.FileVersionInfo]::GetVersionInfo($_.FullName).FileVersion
对于Foreach-Object
,%
是shorthand,$_
是管道中的变量,它将是FileInfo
对象。然后,您可以使用 $_.FullName
访问 FullName
属性。这将包含文件的完整路径。
更新:
似乎 powershell v1.0 中的 -filter
功能与更高版本不同,似乎只作用于路径,而不作用于文件名,因此您需要改为执行以下操作:
$f = gci "C:\Pro*" -recurse | ? { $_.name -eq 'SymCorpUI.exe' }
$f | % { [System.Diagnostics.FileVersionInfo]::GetVersionInfo($_.FullName).FileVersion
我要做的是:
在 "c:\Program Files\" 中,我必须搜索一个 .exe 文件,然后收集该文件的版本。
目前,我坚持使用 .exe 搜索。我这样做是为了知道,但没有显示输出:
Get-ChildItem -Path C:\Pr*\ -Filter SymCorpUI.exe -Recurse | % {Write-Host $_.FullName}
我知道如何收集版本:
[System.Diagnostics.FileVersionInfo]::GetVersionInfo("PATH OF THE FILE\ccc.exe").FileVersion
也许搜索的结果应该放在一个变量中,然后可以在 getVersionInfo 部分中检索内容,但我完全卡住了。
关于如何实现此目标的任何想法/想法?
非常感谢您的帮助:D
大功告成,只需将 Get-ChildItem
的输出存储到变量中即可。这将是一个 FileInfo
对象数组,因此您需要遍历它们以提取您想要的信息,这将是 fullname
属性:
$f = Get-ChildItem -Path C:\Pr*\ -Filter SymCorpUI.exe -Recurse
$f | % { [System.Diagnostics.FileVersionInfo]::GetVersionInfo($_.FullName).FileVersion
对于Foreach-Object
,%
是shorthand,$_
是管道中的变量,它将是FileInfo
对象。然后,您可以使用 $_.FullName
访问 FullName
属性。这将包含文件的完整路径。
更新:
似乎 powershell v1.0 中的 -filter
功能与更高版本不同,似乎只作用于路径,而不作用于文件名,因此您需要改为执行以下操作:
$f = gci "C:\Pro*" -recurse | ? { $_.name -eq 'SymCorpUI.exe' }
$f | % { [System.Diagnostics.FileVersionInfo]::GetVersionInfo($_.FullName).FileVersion