2017-10-18 419 views
0

我试图从特定的目录树中获取每个级别的文件夹的FullName的输出。Powershell脚本获取目录树的FullName

我想得到这样的输出:

C:\ 
C:\dir1 
C:\dir1\dir2 
C:\dir1\dir2\dir3 

的事情是,该目录必须是具体的...像C:\C:\dir1\dir2\dir3

之间的目录部分就像一个路径开始和结束路径,任何想法?

回答

0

试试这个:

$Path = 'C:\dir1\dir2\dir3' 

$Folders = $Path -Split "\\" 
$Folders | % { $i = 0 } { $Folders[0..$i] -Join "\" -Replace ":$", ":\"; $i++ } 

结果:

C:\ 
C:\dir1 
C:\dir1\dir2 
C:\dir1\dir2\dir3 
2

对于PowerShell的V3或更高版本:

Get-ChildItem C:\dir1 -Directory -Recurse | 
    Select-Object -ExpandProperty FullName 

对于旧版本:

Get-ChildItem C:\Dir1 -Recurse | 
    Where-Object { $_.PSIsContainer } | 
    Select-Object -ExpandProperty FullName 
+0

你喜欢那样,但是,我试图让路径只有dir1和(可以说)dir10。但是有些导演是不相关的,所以只有列表中的路径。我不知道如何只包括那些。 我尝试了几个事情与拆分路径。我虽然做了一个循环,所以它重复分裂,直到它的路径“C:\ Exaple”。但它没有按预期工作:) –

+0

'Get-ChildItem'有一个'-Exclude'参数来排除处理中的某些项目。我建议先阅读文档。 –