【问题标题】:Powershell - Iterate over a specific nested directoryPowershell - 遍历特定的嵌套目录
【发布时间】:2018-07-04 21:52:56
【问题描述】:

让我们考虑一下这个文件夹树,

某个文件夹\ 用户 1\桌面 用户 2\桌面 用户 3\桌面 用户 4\桌面 用户 5\桌面 ...

现在,我的目标是扫描每个 \Desktop 文件夹以查找特定类型的文件。我能够找到如何使用Get-ChildItem 搜索特定类型,但我似乎无法获得循环遍历每个用户然后查看他们各自桌面的符号。

这是我的尝试,

for($i=0;$i -le 2;$i++){
    $Files = Get-ChildItem SomeFolder\*\Desktop -Filter *.txt -Recurse
    return $Files
}

注意

我添加了一个 for 循环,以尽量减少将被扫描的用户数量。但它显然不起作用,因为它只是继续运行。

编辑

@Vivek Kumar Singh 的道具强调了我的代码中的一个问题。我的 for 循环实际上是多余的,这使执行时间变得不必要地长。只调用

$Files = Get-ChildItem SomeFolder\*\Desktop -Filter *.txt -Recurse

可能需要一些时间,但最终会奏效。

【问题讨论】:

  • 这段代码Get-ChildItem SomeFolder\*\Desktop -Filter *.txt -Recurse 对我来说工作正常。使用 for 循环来限制用户数量是多余的,因为路径中的 asterik(*) 将对所有用户进行递归搜索。即使您想限制用户数量,也有更好的方法来限制它,而不是使用带有变量的 for 循环(在这种情况下为$i),因为在您的代码中没有使用它。
  • @VivekKumarSingh 是的,我认为我的第一次尝试还可以。你真的发现了我的错误。做我的 for 循环实际上是多余的,是什么导致了问题。我不止一次地重新处理Get-ChildItem,这导致它非常慢。但是,这是正确的答案。

标签: powershell iteration


【解决方案1】:

如果您只想返回来自Get-ChildItem 的前两个结果,您可以使用Select-Object

$Files = Get-ChildItem SomeFolder\*\Desktop -Filter *.txt -Recurse | Select-Object -First 2

这应该很快运行,因为Get-ChildItem 没有完全枚举文件列表,管道在前两项之后中止。

【讨论】:

    【解决方案2】:

    这应该可行:

    $folder = 'C:\work\SomeFolder'
    
    gci $folder -Directory | %{
        $files = Get-ChildItem "$($_.FullName)\Desktop" -Filter *.txt
        Write-Host "$($_.Name) files"
        $files.FullName
    }
    

    【讨论】:

    • 我认为您错过了仅在 Desktop 子文件夹中过滤的要求
    • 感谢您的通知。现已更正。
    【解决方案3】:

    这样的?我不测试它。

    $folders =  Get-ChildItem SomeFolder:\  -Directory -Filter "Desktop*"
    
    foreach ($folder in $folders)
    {
    $Files = Get-ChildItem SomeFolder:\$folder -Filter *.txt -Recurse
    
    }
    

    【讨论】:

    • 您的第一行没有返回预期的文件夹。
    • 除非你知道你的代码是正确的,否则在没有测试的情况下写一个答案是个坏主意。您尚未解释答案中的代码有何不同/工作原理,或者问题中的代码存在任何问题。我建议您阅读stackoverflow.com/help/how-to-answer,因为这将更好地解释您的答案所缺少的一切。
    猜你喜欢
    • 2012-05-20
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    • 2019-01-16
    • 2021-05-28
    • 1970-01-01
    • 1970-01-01
    • 2013-09-21
    相关资源
    最近更新 更多