我可以使用此命令递归获取所有子项:
Get-ChildItem -recurse
Run Code Online (Sandbox Code Playgroud)
但有没有办法限制深度?例如,如果我只想降低一个或两个级别?
CB.*_*CB. 101
你可以试试:
Get-ChildItem \*\*\*
Run Code Online (Sandbox Code Playgroud)
这将返回深度为两个子文件夹的所有项目.添加\*会添加一个额外的子文件夹来搜索.
根据使用get-childitem限制递归搜索的OP问题,您需要指定可以搜索的所有深度.
Get-ChildItem \*\*\*,\*\*,\*
Run Code Online (Sandbox Code Playgroud)
将返回每个深度为2,1和0的孩子
dee*_*see 52
从PowerShell 5.0开始,您现在可以使用-Depth参数Get-ChildItem!
您将它与-Recurse限制递归相结合.
Get-ChildItem -Recurse -Depth 2
Run Code Online (Sandbox Code Playgroud)
试试这个功能:
Function Get-ChildItemToDepth {
Param(
[String]$Path = $PWD,
[String]$Filter = "*",
[Byte]$ToDepth = 255,
[Byte]$CurrentDepth = 0,
[Switch]$DebugMode
)
$CurrentDepth++
If ($DebugMode) {
$DebugPreference = "Continue"
}
Get-ChildItem $Path | %{
$_ | ?{ $_.Name -Like $Filter }
If ($_.PsIsContainer) {
If ($CurrentDepth -le $ToDepth) {
# Callback to this function
Get-ChildItemToDepth -Path $_.FullName -Filter $Filter `
-ToDepth $ToDepth -CurrentDepth $CurrentDepth
}
Else {
Write-Debug $("Skipping GCI for Folder: $($_.FullName) " + `
"(Why: Current depth $CurrentDepth vs limit depth $ToDepth)")
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
83459 次 |
| 最近记录: |