powershell - 计数不适用于 -include jpg

标签 powershell scripting powershell-4.0

我有以下脚本:

$Extension = "*.jpg"
Get-ChildItem -Path 'C:\Users\DAVID\Documents\Test' -Directory | ForEach-Object {
    $FilesInFolder = @($_ | Get-ChildItem -Recurse -Include $Extension -File -Force)

    $FileSize = $FilesInFolder | Measure-Object -Property Length -Sum |
                Select -ExpandProperty Sum
    $FileSize = "{0:N2}" -f ($FileSize/1MB) + " MB"

    $NumFiles = $FilesInFolder.Count
}

但它总是计算文件夹中的所有内容,包括 .zip 文件和 .exe。 我在这里做错了什么?我怎样才能让它只计算 .jpg 文件。找不到任何解决方案,但我认为它与此行有关:

$FilesInFolder = @($_ | Get-ChildItem -Recurse -Include $Extension -File -Force)

最佳答案

我无法完全解释这一点,因为文档在这个问题上有点不清楚,但你的怀疑是正确的。您至少有两种简单的方法可以获得正确的结果:

  1. 使用-Filter而不是-Ininclude

    $FilesInFolder = @($_ | Get-ChildItem -Recurse -Filter $Extension -File -Force)
    
  2. 显式指定路径而不是使用输入对象

    $FilesInFolder = @(Get-ChildItem -Path $_.FullName -Recurse -Include $Extension -File -Force)
    

特别是第二个版本让我认为这可能是 Get-ChildItem 中的一个错误(或者至少是非常奇怪的行为)

关于powershell - 计数不适用于 -include jpg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42416749/

相关文章:

powershell - 如何通过使用 Powershell 从另一个类 (.cs) 文件中读取来创建一个类?

xml - 多个 XML 到 powershell,提取信息,然后使用信息

javascript - 如何找到在使用 Javascript 动态创建的某些字段中输入的值的总和?

php - 销售基于 PHP 框架构建的脚本

Exchange 2010 上的 C# 和 powershell - 无法识别术语 'Group-Object'

正则表达式将组与 PowerShell 中的字符串匹配

php - 如何从 php 将参数传递给 windows 命令行程序中的可执行文件?

c++ - 为什么日志记录输出显示在控制台主机中,而不显示在 ISE 中? (v4.0)

powershell - 如何获取已安装设备的驱动程序 key ?

powershell - 使用 Add-Content PowerShell 将文本添加到现有文件的新行