簡體   English   中英

使用PowerShell查找具有相同名稱的文件夾和文件

[英]Finding folders and files with same name using PowerShell

我需要提取某些不知道其名稱的DLL文件的fileversion。 我所知道的是保存fileversion的文件所在的位置,並且其名稱與其隱藏在其下的文件夾相同。

實際上是這樣的:

C:\\inetpub\\wwwroot\\APPFolder\\bin\\files (其中子文件夾的名稱與bin文件夾中的文件的名稱匹配)

經過多次嘗試(和很多失敗),我來回走了一點,現在我可以很舒服地依靠這段代碼了……。 關閉,但是沒有雪茄

Get-ChildItem -Path c:\temp\Documents -recurse -Filter *.dll | where-object{ (Get-ChildItem -Path c:\temp\Documents -recurse -Filter *.dll) -match $_.Directory.Name }

這段代碼遞歸地搜索\\temp\\documents下的所有\\temp\\documents ,然后匹配文件夾中的文件,這很不錯...但是不是我想要的。 同樣,上面的代碼還為文件夾提供了與其所在文件夾相匹配的文件,而不僅僅是匹配的文件。

那么...有什么建議嗎? 上面提到的bin文件夾中有多個DLL文件,這就是為什么我需要選擇一個與APPFolder同名的DLL的原因。

這是一個代碼示例,它將為您提供所需文件的完整文件路徑。

    dir . -Recurse -Filter *.dll | ? { -not $_.PSIsContainer } | ? { $_.FullName.ToLower().Contains( [IO.Path]::DirectorySeparatorChar + [IO.Path]::GetFileNameWithoutExtension( $_.Name.ToLower() ) + [IO.Path]::DirectorySeparatorChar ) } | Select -ExpandProperty FullName

分解,我們有:

dir . -Recurse -Filter *.dll

這將遞歸搜索當前目錄及其子目錄,以查找所有擴展名為.dll的文件:

 ? { -not $_.PSIsContainer }

這將消除以.dll結尾的目錄。 不太可能,但可能

? { $_.FullName.ToLower().Contains( [IO.Path]::DirectorySeparatorChar + [IO.Path]::GetFileNameWithoutExtension( $_.Name.ToLower() ) + [IO.Path]::DirectorySeparatorChar }

這會將其過濾為文件名與路徑中位於其上方的目錄名稱相同的DLL文件。

 Select -ExpandProperty FullName

這將為您提供完整的文件路徑。

然后,您可以在此處按照此問題的答案獲取FileVersion。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM