仅在目录中计算 .txt 文件的 Powershell 脚本

Powershell Script to count .txt files only in a directory

我的目标是向某些用户发送电子邮件,通知某些文件夹目录中的当前文件数

我只需要计算扩展名为 .txt 的文件,并排除其中的文件夹和文件。

请看下图

U:\TESTING\Main文件夹

U:\TESTING\Main Folder\Sub 文件夹 1

U:\TESTING\Main Folder\Sub 文件夹 2

输出结果应该看起来像这样

主文件夹行应该只有 1,但它还包括子文件夹 1 和 2 以及其中的 txt 文件。

这是计算文件总数的代码部分

$total = Get-ChildItem $path -Recurse -File -Include *.txt |Where-Object {$_.LastWriteTime} | Measure-Object | ForEach-Object{$_.Count}

当我在这一行中删除 -Recurse 时,总列

的结果变为 0
 $total = Get-ChildItem $path  -File -Include *.txt |Where-Object {$_.LastWriteTime} | Measure-Object | ForEach-Object{$_.Count}

我找到了以下解决方法

  1. 通过使用 -filter 而不是 -include

只需删除 -recurse 即可排除子目录文件的计数 并使用 -filter 而不是 -include

$path = "D:\LIVE"

 $total = Get-ChildItem $path  -File -filter *.txt |Where-Object {$_.LastWriteTime} | Measure-Object | ForEach-Object{$_.Count}
  1. 使用 get-Item 而不是带 -include 的 Get-ChildItem

-Filter 仅限于使用一个参数,因此如果您想使用 -include 来使用尽可能多的搜索参数,请使用 Get-Item 而不是 get-childItem

只需添加 *(当未声明路径时)或 * 附加到现有路径

$path = "D:\LIVE\*"

 $total = Get-Item $path -include *.txt, *.xml  |Where-Object {$_.LastWriteTime} | Measure-Object | ForEach-Object{$_.Count}