mogrify - как вы проходите через подпапки в Windows

695
Regmi

Я думал, что есть простой переключатель в mogrifyопциях команд, который говорит, что он также проходит через подпапки. Я не нашел ни одного. В Linux команда " find", кажется, добивается цели, как вы делаете это в Windows ?

magick mogrify -resample 72 -resize 700x700 -format png -path "C:\ImageMagick-7.0.8-Q16\dest" *.* 

работает, но мне нужно, чтобы он проходил через подпапки. Какой самый простой способ сделать это?

В идеале я ищу структуру каталогов источника, которая будет сохранена в месте назначения, но только с обработанными изображениями.

1

1 ответ на вопрос

1
Pimp Juice IT

ImageMagick Рекурсивно Mogrify файлы - Windows

Вы можете использовать цикл FOR / R для итерации файлов, начиная с корневого каталога, в котором находятся файлы, и затем запускать их над командами соответственно, как показано в примере ниже для каждого файла.

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


Пример команды

Примечание. Обязательно замените C:\Source\Folder\Rootего на точную папку, в которой находятся файлы или вложенные папки, которые будут использоваться для выполнения командных операций с этими файлами.

for /r "C:\Source\Folder\Root" %a in (*.*) do mogrify -resample 72 -resize 700x700 -format png "%~a" 

Пример команды (с удалением)

for /r "C:\Source\Folder\Root" %a in (*.*) do mogrify -resample 72 -resize 700x700 -format png "%~a" && IF NOT [%~Xa]==[.png] DEL /Q /F "%~a" 

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

  • FOR / R
  • Пакетные замены (ЗА /?)

    Кроме того, была улучшена замена ссылок на переменные FOR. Теперь вы можете использовать следующий необязательный синтаксис:

    %~xI - expands %I to a file extension only 
  • mogrify

  • Del
Работает как шарм. Спасибо! Мне нужно иметь возможность удалить оригинальные файлы, так как они очень большие, и я не хочу, чтобы они выводились. Я могу сделать копии исходной структуры папок, поэтому сценарию не нужно создавать новую структуру папок для вывода, это может быть перезапись на месте. Regmi 5 лет назад 0
Сделаю! Еще кое-что. Если я добавлю параметр, например -profile "sRGB.icc", нужно ли мне экранировать его в команде из-за используемых кавычек? пример: for / r "C: \ ImageMagick-7.0.8-Q16 \ source"% a in (*. *) сделать магию mogrify -profile "sRGB.icc" -resample 72 -resize 700x700 -format png "% ~ a " Regmi 5 лет назад 0
Я понял это, не беспокойтесь. команда совершенно правильная, похоже, что добавление профиля в PNG является проблемой. Regmi 5 лет назад 0

Похожие вопросы