gpt4 book ai didi

Powershell:如何计算多个文件中每个文件的命令输出行数?

转载 作者:行者123 更新时间:2023-12-05 03:30:39 27 4
gpt4 key购买 nike

exiftool 为它处理的每个文件生成多行输出。我想在目录中的所有 jpg 上调用它,并且我想查看每个文件输出了多少行。这样做,

exiftool *.jpg | measure-object -line

给出了所有文件的总输出行数,而不是每个文件的行数。这个我也试过,

exiftool *.jpg | foreach{get-content $_ | measure-object -line}

但这只是表明我不知道如何使用 Powershell(即,我收到了很多错误消息)。帮忙?

最佳答案

Get-ChildItem -Filter *.jpg |
ForEach-Object { (exiftool $_.FullName).Count }
  • Get-ChildItem -Filter *.jpg 为当前目录中扩展名为 .jpg 的每个文件输出文件信息对象。

  • ForEach-Object处理每个文件信息对象,可通过 automatic $_ variable 访问,并通过文件信息对象的 .FullName 属性将其作为完整的文件系统本地路径传递给外部 exiftool 程序。

  • 鉴于 PowerShell 发出由外部程序输出的行 一个接一个,当通过 (...) 收集时 - 相当于一个 < em>array of lines[1],您可以简单地对该数组调用 .Count 来获取行数。

    • 也就是说,至少在假设情况下,通过管道传输到 Measure-Object首先用于输出行计数,然后然后应用 .Count 减少内存负载(因为行本身不需要首先全部收集到内存中),以执行为代价速度。

[1] 对于单个输出行,该行按原样捕获,但 PowerShell 对集合和标量的统一处理公开了一个 .Count 属性即使在标量上也是如此。

关于Powershell:如何计算多个文件中每个文件的命令输出行数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70779301/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com