Batch file ImageMagick识别没有exif数据的横向图像

Batch file ImageMagick识别没有exif数据的横向图像,batch-file,cmd,imagemagick,powershell,Batch File,Cmd,Imagemagick,Powershell,我有几个JPEG图像,没有大小为1080x1920和1920x1080的exif数据。我只需要识别1920x1080中的那些 试图使用 identify -size 1920x1080 *.jpg 但它也列出了肖像版本。是否有办法,可能使用Windows批处理 谢谢。使用windows,您可以在JPEG文件上进行迭代,并且只对与通用模式匹配的尺寸匹配的文件进行操作 #设置环境路径(这样我们就可以从程序文件中使用'identify.exe' $env:Path=[System.Environme

我有几个JPEG图像,没有大小为1080x1920和1920x1080的exif数据。我只需要识别1920x1080中的那些

试图使用

identify -size 1920x1080 *.jpg
但它也列出了肖像版本。是否有办法,可能使用Windows批处理

谢谢。

使用windows,您可以在JPEG文件上进行迭代,并且只对与通用模式匹配的尺寸匹配的文件进行操作

#设置环境路径(这样我们就可以从程序文件中使用'identify.exe'
$env:Path=[System.Environment]::GetEnvironmentVariable(“路径”、“机器”)
#迭代jpeg的“图像”目录
获取子项C:\images-Filter*.jpg | Foreach对象{
#仅打印图像尺寸宽度xheight
$size=identify.exe-格式为“%wx%h”$\ux.FullName
如果($size-eq“1920x1080”){
#匹配!打印出文件名
echo$\完整名称
}
}
在windows中,您可以迭代JPEG文件,只对与通用模式匹配的尺寸匹配的文件执行操作

#设置环境路径(这样我们就可以从程序文件中使用'identify.exe'
$env:Path=[System.Environment]::GetEnvironmentVariable(“路径”、“机器”)
#迭代jpeg的“图像”目录
获取子项C:\images-Filter*.jpg | Foreach对象{
#仅打印图像尺寸宽度xheight
$size=identify.exe-格式为“%wx%h”$\ux.FullName
如果($size-eq“1920x1080”){
#匹配!打印出文件名
echo$\完整名称
}
}

在好的、老式的、Windows XP和更旧的以及更新的批处理中,您可以执行以下操作来打印所有JPEG文件的宽度、高度和图像名称,用冒号分隔:

identify -format "%w:%h:%f\n" *.jpg
然后,您可以使用
FINDSTR
,在类似这样的FOR循环中选择与宽度和高度要求相匹配的:

for /f "tokens=1,2,* delims=:" %A in ('identify -format "%w:%h:%f\n" *.jpg ^| findstr "1920:1080"') do echo %C

如果使用批处理文件,而不是命令行提示,则必须将所有百分号替换为双百分号,因为某些不合逻辑的原因只有Microsoft才能想出-抱歉

在好的、老式的、Windows XP和旧的以及更新的批处理中,您可以执行以下操作来打印所有JPEG文件的宽度、高度和图像名称,用冒号分隔:

identify -format "%w:%h:%f\n" *.jpg
然后,您可以使用
FINDSTR
,在类似这样的FOR循环中选择与宽度和高度要求相匹配的:

for /f "tokens=1,2,* delims=:" %A in ('identify -format "%w:%h:%f\n" *.jpg ^| findstr "1920:1080"') do echo %C

如果使用批处理文件,而不是命令行提示,则必须将所有百分号替换为双百分号,因为某些不合逻辑的原因只有Microsoft才能想出-抱歉

您需要双百分号,因为出于某种原因,您使用百分号转义百分号,这很奇怪,因为批处理中大多数其他符号的转义字符是^。您需要双百分号,因为出于某种原因,您使用百分号转义百分号,这很奇怪,因为批处理中大多数其他符号的转义字符是^。