You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell筛选宽度为650的图片并输出文件路径?

解决PowerShell筛选指定宽度图片并输出完整路径的问题

正确解决方案

方案1:修复Get-Image.ps1脚本后使用

  1. 打开Get-Image.ps1,将第三行修改为:
$input | ForEach-Object { [Drawing.Image]::FromFile($_.FullName) }
  1. 执行以下命令,直接输出符合条件的图片完整路径:
Get-ChildItem -Filter *.png -Recurse | .\Get-Image | Where-Object { $_.Width -eq 650 } | Select-Object -ExpandProperty FullName

方案2:直接使用单条命令(无需脚本)

执行以下命令,同时注意释放图片资源避免文件锁定:

Add-Type -Assembly System.Drawing
Get-ChildItem -Filter *.png -Recurse | ForEach-Object {
    $image = [System.Drawing.Image]::FromFile($_.FullName)
    if ($image.Width -eq 650) {
        $_.FullName
    }
    $image.Dispose()
}

原方案错误原因说明

  • 方案1报错原因:原Get-Image.ps1中直接将$_传入FromFile方法,此时$_是FileInfo对象,隐式转换为字符串时仅返回文件名而非完整路径,导致系统找不到文件。修改为$_.FullName即可传递完整路径。
  • 方案2无输出原因:原命令中ForEach-Object返回的是Image对象而非原FileInfo对象,Image对象没有FullName属性,因此添加| ft fullname后无输出。正确做法是在循环内基于原FileInfo对象输出路径,同时处理图片资源释放。

内容的提问来源于stack exchange,提问作者puddingrocks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 17:08:22