Windowsバッチifステートメントは、すべてが1行にある場合にのみ機能します

rossmcm

この問題のコンテキストはImageMagickでしたが、問題は一般的なものです。

インストールされているものに応じて、2つのImageMagick exeファイルの1つを条件付きで呼び出すバッチファイルシェルを作成しようとしました(同じバッチファイルを2つの異なるPCで実行できます)。

私はシェルバッチファイルを持っていますIM.BAT

if exist "C:\Program Files\ImageMagick-6.8.8-Q16\"  "C:\Program Files\ImageMagick-6.8.8-Q16\Convert" %*
if exist "C:\Program Files\ImageMagick-6.8.8-Q8\"   "C:\Program Files\ImageMagick-6.8.8-Q8\Convert" %*

そしてこのファイルからそれを呼び出しますMergeImages.BAT

:    Use:  call MergeImages <input file1> <input file2> <output file>   
:
    call IM.bat ^
     "%~1" ^
     ^( "%~2" -gravity center  ^) ^
     -composite ^
     "png32:%~3"

から順番にそれを呼び出しますTEST.BAT

call MergeImages.bat image1.png image2.png image3.png

それはすべて期待どおりに機能します。しかし、私がの流れをきれいにしようとしたときIM.BAT

if exist "C:\Program Files\ImageMagick-6.8.8-Q16\" (
  "C:\Program Files\ImageMagick-6.8.8-Q16\Convert" %*
  goto :EOF
  )
if exist "C:\Program Files\ImageMagick-6.8.8-Q8\" (
  "C:\Program Files\ImageMagick-6.8.8-Q8\Convert" %*
  goto :EOF
  )
echo Error: No executable found

エラーが発生します-composite was unexpected at this timeエラーはImageMagickではなくバッチプロセッサから発生していると確信しており、おそらく前の行で括弧を使用していることが原因ですが、それを機能させる方法がわかりません。どんなポインタでもありがたいです。

dbenham

)中には^( "%~2" -gravity center ^) ^途中でIM.BATでIFブロックを閉じています。IM.BATが認識できるようになる前に削除されるため、現在のエスケープは何もしていません。また、開口部の脱出は(必要ありません。

問題を解決するためのいくつかのオプションがあります。

オプション1:MergeImages.batを変更する

:    Use:  call MergeImages <input file1> <input file2> <output file>   
:
    call IM.bat ^
     "%~1" ^
     ( "%~2" -gravity center  ^^) ^
     -composite ^
     "png32:%~3"

オプション2:IM.BATを変更する

if exist "C:\Program Files\ImageMagick-6.8.8-Q16\" ^
  "C:\Program Files\ImageMagick-6.8.8-Q16\Convert" %* & goto :EOF
if exist "C:\Program Files\ImageMagick-6.8.8-Q8\" ^
  "C:\Program Files\ImageMagick-6.8.8-Q8\Convert" %* & goto :EOF
echo Error: No executable found

よくわかりませんが、かっこも必要ですか?引数リストでそのように使用されている括弧を見たことがありません(そしてImageMagickを使用したこともありません)。MergeImages.batが次のように単純である可能性があるかどうか疑問に思います。

:    Use:  call MergeImages <input file1> <input file2> <output file>   
:
    call IM.bat ^
     "%~1" ^
     "%~2" -gravity center ^
     -composite ^
     "png32:%~3"

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ForfilesがネストされたForループは、バッチが同じフォルダーにある場合にのみ機能します

分類Dev

Windows 10のショートカットキーは、ショートカットがデスクトップにある場合にのみ機能します

分類Dev

Pytorch Resnet CNNは、テストデータにすべてのクラスが含まれている場合にのみ機能します

分類Dev

ElseステートメントがExcelVBAユーザーフォームのデータの最後の行に対してのみ機能する場合

分類Dev

Windows 10デスクトップショートカットキーは、Windowsフォルダーが開いている場合にのみ機能します

分類Dev

Pythonですべてのtryステートメントが成功した場合にのみステートメントを実行します

分類Dev

caseステートメントが使用されている場合、isDefinedAtメソッドはどのように機能しますか?

分類Dev

ステートメントは機能するが、他に追加しても何も機能しない場合

分類Dev

デバッグcout行が前にある場合にのみステートメントが渡される場合(Cのマルチスレッド)

分類Dev

バッチファイルの条件-FORループがtrueの場合にのみ次のステートメントを実行します

分類Dev

ホバーを使用してテキストの色を変更する場合、画面が最小化されている場合にのみ機能します

分類Dev

すべてのコードは正常に機能しますが、「if」ステートメントのみが機能しません

分類Dev

cでifステートメントが機能しない場合、ifステートメント内のセクションは常に実行されます

分類Dev

すべての `if / else-if / else-if`ステートメントでセグメンテーション違反が発生しますが、それらの1つにコメントする場合はそうではありません

分類Dev

ajaxの実装に問題があります。ステートメントが機能しない場合

分類Dev

Switchステートメントは一部の場合にのみ機能します

分類Dev

Angular Appは、すべてのコンポーネントが1つのファイルにある場合は機能しますが、コンポーネントが別々のファイルにある場合は「nomod」エラーをスローします

分類Dev

等価性をチェックしているときに、すべてが if ステートメント内で機能しないのはなぜですか?

分類Dev

条件が真の場合にのみ関数から返される1行のステートメントはありますか?

分類Dev

条件が真の場合にのみ関数から返される1行のステートメントはありますか?

分類Dev

設定方法プッシュボタンは、2行の編集入力ウィジェットにテキストが含まれている場合にのみ機能する必要があります

分類Dev

ifステートメントがバッチで機能していません(elseに直接移動します)

分類Dev

ドロップダウンメニューは機能しますが、ホバーしてクリックしない場合にのみ機能します

分類Dev

ステートメントをマージしますが、正確に* 1 *行が一致する場合にのみ更新します

分類Dev

CentOs localhostは、インターネットに接続している場合にのみ機能します

分類Dev

文はすべてチェックしたり、単に1つのテキストフィールドが空の場合という場合にする方法

分類Dev

ホバーのコンテキストメニューがアタッチされている場合、タブクリックは機能しません

分類Dev

シングルステップのsshポート転送は機能しませんが、リモートジャンプサーバーとリモートローカルホストでsshポート転送が別々に実行された場合にのみ機能しますか?

分類Dev

Linq結合は、すべてのテーブルにデータがある場合にのみ機能します

Related 関連記事

  1. 1

    ForfilesがネストされたForループは、バッチが同じフォルダーにある場合にのみ機能します

  2. 2

    Windows 10のショートカットキーは、ショートカットがデスクトップにある場合にのみ機能します

  3. 3

    Pytorch Resnet CNNは、テストデータにすべてのクラスが含まれている場合にのみ機能します

  4. 4

    ElseステートメントがExcelVBAユーザーフォームのデータの最後の行に対してのみ機能する場合

  5. 5

    Windows 10デスクトップショートカットキーは、Windowsフォルダーが開いている場合にのみ機能します

  6. 6

    Pythonですべてのtryステートメントが成功した場合にのみステートメントを実行します

  7. 7

    caseステートメントが使用されている場合、isDefinedAtメソッドはどのように機能しますか?

  8. 8

    ステートメントは機能するが、他に追加しても何も機能しない場合

  9. 9

    デバッグcout行が前にある場合にのみステートメントが渡される場合(Cのマルチスレッド)

  10. 10

    バッチファイルの条件-FORループがtrueの場合にのみ次のステートメントを実行します

  11. 11

    ホバーを使用してテキストの色を変更する場合、画面が最小化されている場合にのみ機能します

  12. 12

    すべてのコードは正常に機能しますが、「if」ステートメントのみが機能しません

  13. 13

    cでifステートメントが機能しない場合、ifステートメント内のセクションは常に実行されます

  14. 14

    すべての `if / else-if / else-if`ステートメントでセグメンテーション違反が発生しますが、それらの1つにコメントする場合はそうではありません

  15. 15

    ajaxの実装に問題があります。ステートメントが機能しない場合

  16. 16

    Switchステートメントは一部の場合にのみ機能します

  17. 17

    Angular Appは、すべてのコンポーネントが1つのファイルにある場合は機能しますが、コンポーネントが別々のファイルにある場合は「nomod」エラーをスローします

  18. 18

    等価性をチェックしているときに、すべてが if ステートメント内で機能しないのはなぜですか?

  19. 19

    条件が真の場合にのみ関数から返される1行のステートメントはありますか?

  20. 20

    条件が真の場合にのみ関数から返される1行のステートメントはありますか?

  21. 21

    設定方法プッシュボタンは、2行の編集入力ウィジェットにテキストが含まれている場合にのみ機能する必要があります

  22. 22

    ifステートメントがバッチで機能していません(elseに直接移動します)

  23. 23

    ドロップダウンメニューは機能しますが、ホバーしてクリックしない場合にのみ機能します

  24. 24

    ステートメントをマージしますが、正確に* 1 *行が一致する場合にのみ更新します

  25. 25

    CentOs localhostは、インターネットに接続している場合にのみ機能します

  26. 26

    文はすべてチェックしたり、単に1つのテキストフィールドが空の場合という場合にする方法

  27. 27

    ホバーのコンテキストメニューがアタッチされている場合、タブクリックは機能しません

  28. 28

    シングルステップのsshポート転送は機能しませんが、リモートジャンプサーバーとリモートローカルホストでsshポート転送が別々に実行された場合にのみ機能しますか?

  29. 29

    Linq結合は、すべてのテーブルにデータがある場合にのみ機能します

ホットタグ

アーカイブ