2016-07-14 74 views
2

我想查找主文件夾內的子文件夾。在不知道PowerShell中的完整路徑的情況下到達特定文件夾

實施例像我有一個名爲build文件夾和內部建立有子文件夾作爲一個例子XYZ,裏面XYZ還有其它子文件夾等ZYX,它裏面有其他文件夾。完整路徑如:build\XYZ\ZYX\ABC。我想去ABC但我沒有一條路可以達到它。如何查找子文件夾並在PowerShell腳本中轉​​到該文件夾​​。 將Get-childItem工作?如果是,如何?

回答

2

可以使用Get-ChildItem cmdlet檢索所有目錄和使用Where-Object cmdlet來排除它有子目錄中的所有文件夾:

Get-ChildItem 'your_path_to_build' -Recurse -Directory | Where-Object { ![IO.Directory]::GetDirectories($_.FullName) } 
+0

謝謝爲答案人。我理解了一半,但我沒有得到對象,並在以後。所以,Get-childItem C:\ CICD \ TestCICD -Recurse -Directory |這是我的一半命令。並在TestCICD我有一個層次的子文件夾爲C:\ CICD \ TestCICD \ mvadaria \ mv \ mv1 \ mv2。我在找mv2。你可以根據這個例子編寫命令嗎?再次感謝 – Meet101

+0

帶參數的Get-ChildItem會返回四個文件夾:mvadaria,mv,mv1和mv2。然後,Where-Object cmdlet篩選所有沒有子文件夾的文件夾。因此只有mv2被返回。 –

2

可以使用-Directory開關和搜索遞歸地使用下面的命令:

Get-ChildItem *ABC* -Recurse -Directory 

其中* ABC *是您嘗試查找的文件夾名稱的一部分。

1

這可能是有點長篇大論,但我猜你是想先找出最長路徑(在層次最深的)到CD吧,所以也許是這樣的:

Set-Location (Get-ChildItem 'c:\CICDTestCICD' -Recurse -Directory |% { 
       [PSCustomObject]@{Path=$_.FullName; 
           Depth=($_.fullname.split('\')).count 
           } 
                    } | 
      sort Depth -Descending | select -first 1 
      ).path 

的想法是:

  • 您使用'\'作爲每個目錄的分隔符來分隔完整路徑名稱;
  • 創建PSCustomObject持有目錄的完整路徑和深度每個
  • 排序的深度和層次結構中選擇最深的路徑
  • 打印的完整路徑和目錄更改爲
相關問題