【问题标题】:Get-Childitem Recursive but skip files in particular parent folderGet-Childitem 递归但跳过特定父文件夹中的文件
【发布时间】:2018-03-19 13:07:34
【问题描述】:

这应该是一个简单的问题。我需要运行 Get-Childitemrecursively 以在以下文件夹结构中查找 .jpgs:

'D:\Images\' + $local:YM + '\' + $local:YMD + '\' + $env:USERNAME

用户名文件夹包含 jpgs 和包含 jpgs 的其他文件夹。我希望递归 Get-Childitem 处理用户名文件夹的子文件夹中的 jpg,但跳过用户名文件夹本身中的 jpg。

例如,我希望Get-Childitem 地址:

'D:\Images\2018_03\2018_03_19\Garrett\Shoes\Shoe.jpg'

但不是:

'D:\Images\2018_03\2018_03_19\Garrett\Shoe.jpg'

我尝试使用以下路径但没有成功:

'D:\Images\' + $local:YM + '\' + $local:YMD + '\' + $env:USERNAME + '\*\'

我不确定这是否失败,因为我没有说明通配符是一个目录,如果是这种情况,我该怎么做?欢迎任何意见或建议。

谢谢!

【问题讨论】:

  • Get-ChildItem -Exclude folder1,folder2 ?
  • 所以你认为我可以简单地排除用户名文件夹?这不会破坏用户名文件夹中文件夹的递归扫描吗?
  • @Hackerman 您的建议似乎有效,继续写下它作为答案,我会在确认后将其标记为答案。

标签: powershell get-childitem


【解决方案1】:

使用Where-Object 过滤DirectoryName 属性:

$DirectoryNameToExclude = 'D:\Images\' + $local:YM + '\' + $local:YMD + '\' + $env:USERNAME
Get-ChildItem . -Recurse |Where-Object {$_.DirectoryName -ne $DirectoryNameToExclude}

【讨论】:

  • 如果他使用递归,不妨使用-Exclude参数作为模式。
  • @TheIncorrigible1 问题在于它还会排除子文件夹中具有匹配名称的文件
  • 哦。我明白他现在想做什么。所以他试图从用户名文件夹中的文件夹中获取文件,而不是该用户名文件夹本身中的文件。
  • 这是正确的 - 我想从用户名文件夹中的各个文件夹中提取 jpg,而不是用户名文件夹本身中的 jpg。
猜你喜欢
  • 2016-11-08
  • 1970-01-01
  • 1970-01-01
  • 2015-10-29
  • 1970-01-01
  • 2020-04-22
  • 2021-05-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多