1

私はバッチファイルの経験がほとんどなく、これを私が書いた他のファイルからまとめました。

バッチ ファイルには、アイコンの上にドロップされた画像のフォルダーがあり、写真の向きに応じて異なるサイズ変更を実行する必要があります。

エラーを読み取る前に、DOS ウィンドウが閉じます。

ループ内に変換または識別行のみ (一度に 1 行) がある場合は機能しますが、if else では失敗します。IF ELSE を有効にすると、DO の後の開き括弧がテキスト エディターで閉じ括弧を強調表示しません。

どんな助けでも大歓迎です。

REM @echo off

REM Read all the png images from the directory
FOR %%f IN (%1\*.png) DO (

REM Set the variable width to the image width
SET width=identify -format "%%[fx:w]" %%f

REM Set the variable height to the image height
SET height=identify -format "%%[fx:h]" %%f

REM Check if the photo is portrate or landscape and run the relavant code
IF %width% LSS %height% (
convert "%%f" -trim -resize x740 "modified/%%~nf.jpg" 
) ELSE (
convert "%%f" -trim -resize x740 -background blue -gravity center -extent 740x740 "modified/%%~nf.jpg" 
)
)

PAUSE

エラー:

C:\>REM @echo off

C:\>REM Read all the png images from the directory
( was unexpected at this time.

C:\>IF  LSS  (
4

1 に答える 1

1

まず、引数を展開し、スペース名のエラーを回避するために黒引用符を使用します。

第二に、コマンドの出力を、あなたがしようとしている方法で変数に設定することはできません。FOR /F を使用してコマンドの出力を取得する必要があります。他の方法はありません。

これを試して:

(更新しました)

  1. / ではなく、\ スラッシュを使用してスクリプトに正しい引数を渡すようにしてください。

.

    @echo off

    Setlocal enabledelayedexpansion

    :: Removes the last slash if given in argument %1
    Set "Dir=%~1"
    IF "%DIR:~-1%" EQU "\" (Set "Dir=%DIR:~0,-1%")

    :: Read all the png images from the directory

    FOR %%f IN ("%dir%\*.png") DO (

        :: Set the variable width to the image width
        For /F %%# in ('identify -format "%%[fx:w]" "%%f"') Do (SET /A "width=%%#")

        :: Set the variable height to the image height
        For /F %%# in ('identify -format "%%[fx:h]" "%%f"') Do (SET /A "height=%%#")

        :: Create the output folder if don't exist
        MKDIR ".\modified" 2>NUL

        :: Check if the photo is portrate or landscape and run the relavant code
        IF !width! LSS !height! (
            convert "%%f" -trim -resize x740 "modified\%%~nf.jpg" 
        ) ELSE (
            convert "%%f" -trim -resize x740 -background blue -gravity center -extent 740x740 "modified\%%~nf.jpg" 
            )
        )

    PAUSE&EXIT
于 2012-11-21T21:35:35.490 に答える