2016-05-10 7 views
0

私はこのディレクトリ内のファイルの寸法をチェックし、方向を決定するために(ImageMagickからの)identifyを使用する単純なバッチスクリプトを書こうとしています。後で、別々のフォルダに移動することを追加します。 問題はforループを入力できないことです。あなたがidentifyを作ることができます基本バッチ、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 
+2

あなたの 'for'ループの中に[delayed expansion](http://stackoverflow.com/a/30284028/2152082)が必要ですが、どうやってそれを入力することはできませんか? – Stephan

+0

チェックして、中に何もせずに休止すると、一時停止しません。それで、その中に何も実行されません。 – Osa

+2

これは、拡張子が付いていないファイルは見つかりませんでした。いずれかがあります? – Stephan

答えて

1

はあなたにディレクトリ内のすべてのファイルのための単一コールの幅と高さを教えてくれ、むしろそれを呼び出すよりも二回それぞれのとすべてのファイル:

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 
) 
+0

それはうまくいった。ありがとう! – Osa

関連する問題