我尝试过多种变体,我尝试过CrapGPT,我尝试过组合和拼凑东西,但就是无法得到我想要的结果。
本质上,我想做的是仅列出顶级文件夹 ParentFolder 中的所有子文件夹,然后在所有子文件夹中搜索两个特定文件夹 targetfolder1 和 targetfolder2 并列出这些目标子文件夹中的所有子文件夹。然后我想将该列表转储到 .csv。
所以本质上它看起来像:
# First, list only the level 0 subfolders
Z:\ParentFolder
Z:\Parentfolder\Subfolder1
Z:\Parentfolder\Subfolder2
Z:\Parentfolder\Subfolder3
...
# Then, list all the level X subfolders that fall only within targetfolder1 and targetfolder2
Z:\Parentfolder\Subfolder1\Sub-subfolder1\targetfolder1
Z:\Parentfolder\Subfolder1\Sub-subfolder2\Sub-sub-subfolder1\targetfolder1
Z:\Parentfolder\Subfolder1\Sub-subfolder3\Sub-sub-subfolder2\targetfolder1
Z:\Parentfolder\Subfolder1\Sub-subfolder3\Sub-sub-subfolder2\targetfolder2
Z:\Parentfolder\Subfolder1\Sub-subfolder4\Sub-sub-subfolder3\sub-sub-sub-subfolder1\targetfolder1
...
因此,父文件夹中的任何子文件夹可能有也可能没有 targetfolder1 或 targetfolder2,但如果有的话,它们可能与其他子文件夹处于同一子文件夹级别,也可能不处于同一子文件夹级别。因此,如果文件夹名称与 targetfolder1 或 targetfolder2 匹配,则仅列出这些相应目标文件夹中的所有目录。
我最终停下来的是:
$parentfolder = "Z:\ParentFolder"
$results = @()
$parentfolder = Get-ChildItem -Path $folder -Depth 0 -Directory -ErrorAction SilentlyContinue
$results += $parentfolder
$targetsubfolders = Get-ChildItem $folder -Recurse | Where-Object {$_.Name -match "targetfolder1" -or $_.Name -match "targetfolder2"} | Select-Object Name
$results += $targetsubfolders
$results | Select-Object FullName | Export-Csv "C:\Users\User\Desktop\results.csv" -NoTypeInformation
我已经盯着这个看了很久了,一切都不再有意义了。非常感谢您的见解。
您的代码问题似乎是
Select-Object Name
,然后尝试Select-Object FullName
。由于前面的陈述,这些对象不再具有 .FullName
属性。 应该将其删除。
您还可以利用此处的管道:
$parentfolder = 'Z:\ParentFolder'
# `-Depth 0` is default here, no need for it
# get folders one level down
Get-ChildItem -Path $parentfolder -Directory -ErrorAction SilentlyContinue |
# get all child folders recursively
Get-ChildItem -Directory -Recurse |
# filter for folders where their name is 'targetfolder1' or 'targetfolder2'
Where-Object Name -In 'targetfolder1', 'targetfolder2' |
Select-Object FullName |
Export-Csv 'C:\Users\User\Desktop\results.csv' -NoTypeInformation