imagemagick を使用して複数のサブフォルダ内のすべてのファイルを識別する

imagemagick を使用して複数のサブフォルダ内のすべてのファイルを識別する

走りたいイメージマジックidentify複数のフォルダ内のすべての画像を一度にスキャンするオプションがあります。

以下の構文と同様に実行する必要がありますが、すべてを同じ 1 つのログ ファイルに記録したいので、可能であれば、そのためのバッチ ファイルも作成したいと思います。

magick identify -verbose "D:\Images" >log.txt 2>&1

答え1

単に/F の場合ループでディレクターコマンドを使用して、ソース ディレクトリ (D:\Images) から各ファイルへの完全な明示的なパスを取得し、それを再帰的にトラバースします。

これは基本的に、完全な明示的なパスとファイル名をコマンドにmagick1 つずつ渡し、後で確認できるようにログ ファイルに追加します。

以下に、追加のリソースと、これらすべてを使用した適切な構文のコマンド例を示します。これらを適切に活用してください。これは、良い出発点となるはずです。


コマンドラインの例

注記: D\Images\*.*"または何らかのファイル拡張子の部分を置き換えて D\Images\*.jpg"、それらの特定のファイル拡張子のみをリストすることができます。また、必要に応じてまたは何らかのファイル拡張子に変更してF:\OtherFolder\*.png"、以下に示す例のその部分で別のフォルダー パスやファイル拡張子を指定することもできます。

FOR /F "DELIMS=" %A IN ('DIR /A-D /S /B "D:\Images\*.*"') DO magick identify -verbose "%~A">>D:\logfile.txt

バッチ スクリプトの例

注記: このスクリプトは、実行ごとに必要に応じて変数を簡単に設定できるように作成しました。

@ECHO ON

SET Source=D:\Images
SET Ext=*.jpg
SET LogFile=D:\logfile.txt

FOR /F "DELIMS=" %%A IN ('DIR /A-D /S /B "%Source%\%Ext%"') DO magick identify -verbose "%%~A">>"%LogFile%"
GOTO EOF

その他のリソース

答え2

次のワンライナー (Linux で動作しますが、Windows PowerShell を使用する Windows 10 でも動作すると思われます) は、基になるディレクトリ内のすべての jpg 画像とその詳細の再帰リストを提供します。

find . -name "*.jpg" -exec identify {} \;

関連情報