我正在尝试编写一个简单的批处理脚本来使用标识(来自ImageMagick)来检查此目录中文件的大小并确定其方向。稍后,我将添加将它们移动到单独的文件夹中。 问题是它无法进入for循环。
setlocal enabledelayedexpansion
@echo off
for /r %%F in (*.) do (
identify -format "%%w" %%F > temp.txt
set /P temps=<temp.txt
set /A w=%temps%
identify -format "%%h" %%F > temp.txt
set /P temps=<temp.txt
set /A h=%temps%
if /I "%w%" GEQ "%h%" echo Is Landscape
if /I "%w%" LEQ "%h%" echo Is Vertical
pause
)
pause
答案 0 :(得分:1)
您可以让identify
告诉您目录中所有文件的单一调用的宽度和高度,而不是将其称为两次 每个文件:
identify -format "%w %h %f\r\n" *.png
1024 768 a.png
10 10 b.png
因此,您可以将其与脚本配对,并以更快,更简洁的方式执行此操作:
@ECHO OFF
REM Get dimensions and names of all files in one go
FOR /F "tokens=1-3 delims=+" %%A in ('identify -format "%%w+%%h+%%f\r\n" *.png') DO (
REM %%A is width, %%B is height, %%C is name
ECHO %%A,%%B,%%C
)