2016-07-14 7 views
2

メインフォルダ内にサブフォルダがあります。私はbuildというフォルダがあり、内部にサブフォルダを例XYZとしてそこにある構築のようPowerShellのフルパスを知らずに特定のフォルダに移動します

例は、インサイドXYZは、その内部に他のフォルダがあるZYXのように他のサブフォルダがあります。次のような完全なパス:build\XYZ\ZYX\ABC

私はABCに行きたいですが、私はそれに到達するための道を持っていません。サブフォルダを見つけてPowerShellスクリプトでそれを調べる方法 Get-childItemは動作しますか?はいの場合、どうですか?

答えて

2

あなたはすべてのディレクトリを検索し、サブディレクトリを持っているすべてのフォルダを除外するWhere-Objectコマンドレットを使用するようにGet-ChildItemコマンドレットを使用することができます。

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

おかげへの完全なパスとディレクトリ変更を最も深いパスを選択するために、PSCustomObjectを作成答えの男のために。私は半分を理解しましたが、私はどこにオブジェクトがあり、後で取得されません。したがって、Get-childItem C:\ CICD \ TestCICD -Recurse -Directory |これは私の半分の命令です。 TestCICDではC:\ CICD \ TestCICD \ mvadaria \ mv \ mv1 \ mv2というサブフォルダの階層があります。私はmv2を探しています。この例に従ってコマンドを書くことができますか?もう一度ありがとう – Meet101

+0

パラメータを指定したGet-ChildItemは、mvadaria、mv、mv1、およびmv2の4つのフォルダを返します。次に、Where-Objectコマンドレットは、サブフォルダを持たないすべてのフォルダをフィルタリングします。したがって、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 

アイデア

  • 各ディレクトリの区切り文字として '\'を使用してフルパス名を分割します。
  • 深さによって各
  • ソートのためのディレクトリのフルパスと深さを保持し、階層内の
  • 印刷すること
関連する問題