基本批次,不会进入循环

时间:2016-05-10 07:54:53

标签: batch-file for-loop imagemagick

我正在尝试编写一个简单的批处理脚本来使用标识(来自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

1 个答案:

答案 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
)