從具有多個級別的子檔案夾的檔案夾中,我只想將子檔案夾名稱(不帶路徑)保存到僅包含檔案且不再包含子檔案夾的文本檔案中。
示例:只有位于 C:\1\2\3 中的子檔案夾“Test”包含檔案,但沒有其他子檔案夾。腳本應檢測到這一點并將檔案夾名稱 Test 保存在文本檔案中。如果有更多像“Test”這樣的子檔案夾,這些也應該保存在文本檔案中。
帶有子檔案夾的主檔案夾應該是與 .ps1 檔案處于同一檔案夾級別的檔案夾。
我怎么能意識到這一點?
uj5u.com熱心網友回復:
首先在當前路徑中查找所有檔案夾和子檔案夾(遞回):
Get-ChildItem -LiteralPath $PSScriptRoot -Directory -Recurse
然后根據每個目錄本身是否包含0個子檔案夾和0個以上的檔案進行過濾:
Get-ChildItem -LiteralPath $PSScriptRoot -Directory -Recurse |Where-Object {
-not($_ |Get-ChildItem -Directory |Select-Object -First 1) -and $($_ |Get-ChildItem -File -Filter *.txt |Select-Object -First 1)
}
如果$_ |Get-ChildItem -Directory |Select-Object -First 1回傳任何東西,則表示至少有 1 個子檔案夾。
同樣,如果$_ |Get-ChildItem -Filter *.txt |Select-Object -First 1回傳任何東西,那么我們知道目錄中至少存在 1 個 .txt 檔案。
然后我們只需要獲取檔案夾名稱,您可以使用Select-Object -ExpandPropertyor獲取該名稱ForEach-Object:
Get-ChildItem -LiteralPath $PSScriptRoot -Directory -Recurse |Where-Object {
-not($_ |Get-ChildItem -Directory |Select-Object -First 1) -and ($_ |Get-ChildItem -File -Filter *.txt |Select-Object -First 1)
} |Select-Object -ExpandProperty Name
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/420895.html
標籤:
上一篇:列印出核心數
