【问题标题】:PowerShell Script finding File using extension and excluding a folderPowerShell脚本使用扩展名查找文件并排除文件夹
【发布时间】:2018-06-13 04:31:59
【问题描述】:

我正在使用以下代码:

Get-ChildItem -Path N:\USERS -Filter DANTOM.DTM -Recurse -ErrorAction SilentlyContinue -Force

我需要它来查找文件“DANTOM.DTM”或扩展名“.DTM”。我需要排除文件夹 N:\USERS\EDI 因为它是一个 1.7TB 的文件夹,其中永远不会包含此文件。所以这样做真的会加快这个过程。

我希望最终结果要么吐到一个 .txt 文件中,说明 N:\USERS 中的哪些文件夹有该文件,要么只是让它在 powershell 中显示为列表。

谢谢,

【问题讨论】:

  • 所以你只需要GCI C:\Users\* -Directory -Exclude 'EDI' | %{GCI $_ -Include DANTOM.DTM -Recurse -Force -EA 0}|Set-Content "$home\desktop\DTM Location.txt"
  • 我试过你的代码,它只是坐下来永远运行。没有文本文件。

标签: powershell


【解决方案1】:

假设感兴趣的文件不直接驻留在N:\USERS 中(仅在子目录中。),请尝试以下(PSv3+ 语法);例如,通过附加 > dirs.txt 发送到文件。

Get-ChildItem N:\USERS -Directory | ? Name -ne 'EDI' | 
  Get-ChildItem -Recurse -Filter *.DTM | 
    ForEach-Object { $_.DirectoryName }

注意:虽然尝试使用 -Exclude EDI 的更简单方法很诱人,但不幸的是,它似乎无法有效地排除 EDI 子文件夹的整个 子树

【讨论】:

  • @KevinMissildine:追加,例如,> dirs.txt 以获取 UTF16-LE 编码的文本文件,或者,如果您想控制输出编码,追加类似 | Out-File -Encoding utf8 dirs.txt| Set-Content -Encoding utf8 dirs.txt 的内容(对于字符串输出,一方面>Out-File,另一方面Set-Content 的行为相同,除了使用的默认编码。)
  • @KevinMissildine:我的荣幸;很高兴听到它有帮助。
猜你喜欢
  • 1970-01-01
  • 2021-06-17
  • 2021-07-20
  • 1970-01-01
  • 1970-01-01
  • 2012-12-30
  • 2013-12-31
  • 1970-01-01
  • 2015-09-14
相关资源
最近更新 更多