Использование imagemagick для идентификации всех файлов в нескольких подпапках

Я хочу запустить ImageMagick с identify Возможность сканировать все изображения в нескольких папках одновременно.

Он должен работать аналогично приведенному ниже синтаксису, но я хочу записать все в один и тот же файл журнала, и я хотел бы также создать командный файл для этого, если это возможно.

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

1 ответ

Решение

Вы можете просто запустить цикл FOR /F с помощью команды DIR, чтобы получить полный явный путь к каждому файлу из исходного каталога (D:\Images) и рекурсивно пройти его.

Это, по сути, передает каждый полный явный путь и имя файла magick команду один за другим, а затем вы добавите их в файл журнала для последующего просмотра.

Дополнительные ресурсы и пример команды с применимым синтаксисом, использующим все это, предоставлены вам ниже для использования соответственно. Это должно быть хорошей отправной точкой для вас.


Пример командной строки

ПРИМЕЧАНИЕ. Вы можете заменить часть 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

Дополнительные ресурсы

Следующий лайнер (работает в Linux, но, вероятно, также и в Windows 10 с использованием Windows PowerShell) дает вам рекурсивный список всех изображений jpg в базовых каталогах и их детали:

find . -name "*.jpg" -exec identify {} \;
Другие вопросы по тегам