Get-ChildItem:仅显示不包含特定文件的文件夹

时间:2015-08-06 11:58:32

标签: powershell cmd dir get-childitem

平台上的第一篇文章; - )

场景:我有一个根文件夹,其中包含带有设置相关文件的子文件夹。某些子文件夹包含更多子文件夹,包含更多文件,子文件夹。根文件夹或其子文件夹下的每个子文件夹必须包含一个特定文件。

现在我想让所有子文件夹直接位于根文件夹下面,不要包含这个特定文件,既不在子文件夹本身,也不在下面的其他子文件夹中。我只想要根目录下的子文件夹的名称。当然,搜索应该是谨慎的。

我当前的代码如下:

Get-ChildItem $softwarePath -Recurse | ? Name -notlike "Prefix_*.cmd"

不幸的是,结果非常庞大,它也包含了每个子文件夹中的所有文件。我的愿望:只检查根目录下的子文件夹的名称,检查是否存在特定文件。

2 个答案:

答案 0 :(得分:2)

虽然@ jisaak的方法可以很好地解决您的问题,但您可能会发现为巨大的目录结构中的每个文件检索width:auto border-top:1 px solid #000000; border-radius:3px; 个对象的开销可能会导致脚本花一些时间来执行。

如果是这种情况,您可以使用FileInfo方法检索文件名来加快处理速度:

Directory.GetFiles()

答案 1 :(得分:1)

欢迎来到stackoverflow!

你快到了。这是一个解决方案,我首先检索$softwarePath的所有子文件夹,然后只选择不包含该文件的子文件夹:

Get-ChildItem $softwarePath -Directory | 
? { -not (Get-ChildItem $_.FullName -Recurse -File -Filter 'Prefix_*.cmd')}