【问题标题】:Powershell Create CSV of files with "_lowRes.jpg" of a certain file sizePowershell使用特定文件大小的“_lowRes.jpg”创建文件的CSV
【发布时间】:2017-06-04 10:15:03
【问题描述】:

我正在尝试创建一个包含 100 KB 以上且后缀为“_lowRes.jpg”的目录及其子目录中所有 jpg 的 CSV 文件。

想用 Powershell。

有什么帮助吗?

【问题讨论】:

    标签: powershell csv search directory filenames


    【解决方案1】:

    其实这很简单!

    您将使用两个单独的过滤器来执行此操作,PowerShell 通过 Where-Object cmdlet 实现。此 cmdlet 接受 {$_.PropertyName -eq "Something"}PropertyName -eq "Something" 格式的比较。后一种格式仅适用于 PowerShell v3 及更高版本。

    首先,过滤到 100KB 以上的文件。

    Where-Object Length -ge 100KB

    第二部分,文件名包含一些东西。

    Where-object Name -like "*lowRes.jpg*"

    你可以加入他们,但我会像这样将一个连接到另一个。

    dir *.jpg -Recurse | Where-Object Length -ge 100KB | Where-object Name -like "*lowRes.jpg*"

    您可能希望将名称过滤放在首位,因为具有特定名称的文件比大于或小于特定大小的文件少。取决于您的文件的布局方式。

    最后,将所有这些都输入到 Export-Csv cmdlet 和 bam 中,你就完成了!

    【讨论】:

    • 您是否有理由拆分 Where 声明,或者只是个人喜好? <fanboy>Also,我只是想说我非常喜欢你关于如何制作 GUI 和线程脚本博客文章的系列。 </fanboy>
    • 我将它们分开是因为您无法加入 where 语句并保持新的易于阅读的语法。我喜欢新语法,所以我添加了使用两个单独命令的微小低效率。有些人不同意,这很好,但我发现它更容易阅读和解释。我很高兴你喜欢这个网站。如果您希望我讨论某个主题,请告诉我:)
    • 你可以这样做:如果你使用 2 where {$_.Length -ge 100KB -and $_.Name -like "*lowRes.jpg"} 我怀疑性能。过滤器可以在 gci 命令中使用,它对性能更好。如果你有一个名为“toto.jpg”的目录,你也可以使用它
    【解决方案2】:

    你可以这样做:

    Get-ChildItem "C:\temp" -Recurse -file -filter "*_lowRes.jpg" | 
                     Where Length -ge 100KB | select fullname, Length |
                                    export-csv "c:\temp\result.csv" -NoType
    

    短版(不适合纯粹主义者):

    gci "C:\temp" -Rec -file -filter "*_lowRes.jpg" | ? L -le 100KB | select fu*, le* | epcsv "c:\temp\result.csv" -Not
    

    【讨论】:

      猜你喜欢
      • 2019-05-31
      • 2021-05-07
      • 2011-12-15
      • 1970-01-01
      • 2017-10-22
      • 1970-01-01
      • 2021-02-20
      • 2021-12-17
      • 1970-01-01
      相关资源
      最近更新 更多