Ваш оригинальный сценарий оболочки Unix получает выходные данные из первого cmd конвертирования и передается от одного вызова к следующему через stdout / stdin, что обозначается символами '-'.
Это соглашение для программ unix, что аргумент '-' означает "не ищите имя файла для обработки, просто читайте с ввода std".
Кроме того, говоря о соглашениях, программы DOS используют формат «/ o» (опция) для управления программой. Попробуйте convert.exe /?
, чтобы увидеть, получаете ли вы сообщение об использовании или помогите ELSE попробовать convert.exe --help
(и другие варианты Unix), просто чтобы понять, какой синтаксис опции использовать.
Что еще более важно, обратите внимание, что в DOS есть программа std, называемая convert.exe, поэтому убедитесь, что ваш PATH сначала настроен на переход к ImageMagick для Windows DIR. Вы сможете сказать, когда вы выполните convert.exe /?
, и вы получите опции, которые вы не узнаете.
Оригинальный скрипт использует символ канала для передачи стандартного вывода одной программы в стандартный поток следующей программы. Это одна впечатляющая цепочка!
Мой опыт работы с оболочкой cmd на данный момент очень стар, но когда-то канал DOS мог содержать только 64 КБ. Вы можете столкнуться с этой проблемой. Если это длительные команды, попробуйте запустить отдельное окно и выполните команду dir %TEMP
, чтобы увидеть, как создаются файлы каналов. С таким количеством каналов в DOS может возникнуть конфликт имен или какая-то другая проблема.
Итак, выполните простейший случай, convert .. | convert ...
(выполняя только часть работы, чтобы посмотреть, работают ли трубы вообще), и соберите оттуда, добавив еще 1 | convert ..
по мере продвижения. Если он взрывается через некоторое время, тогда вы точно знаете, где это происходит.
Работает ли первая команда с (...)
?
escape-символ \
должен работать нормально, и я вижу, что вы изменили ваши символы пути с /
на \
, так что это хорошо.
И %
имеет особое значение для файлов .bat, чтобы печатать имена переменных, такие как %f%
, так что длительное использование %
только с числами, с которыми вы можете быть в порядке. Для переменной, подобной% f%, я смог найти только один способ сломать перевод, заключив в кавычки, например, %f\%
, что приводит к бесполезному выводу %f\%
.
Не идеально, но и .bat программирование.
Надеюсь, это поможет.