Ошибка запуска функции 'монтажа' в ImageMagick 'слишком много аргументов'?

Я пытаюсь запустить montage Функция в ImageMagick с большим количеством аргументов (264) напрямую через скрипт ruby. Вот строка, которая вызывает функцию:

montage -mode concatenate -tile #{x_tiles}x#{y_tiles} #{tempfiles.map{|t| t.path}.join(' ')} #{final_filename}.jpg

Это работает для меньшего числа аргументов (например, 10), но когда я пытаюсь запустить это с большим количеством (230~), я получаю следующую ошибку:

Argument list too long {список всех аргументов} (Errno: :E2BIG),

Я использую Windows, поэтому я попробовал и PowerShell и CMD, получая ту же ошибку.

Есть ли способ преодолеть это при редактировании команды в ruby ​​или иным образом (например, с помощью глобинга)? Я попытался изменить окончание файла, как упомянуто здесь, но не смог получить правильный синтаксис.

1 ответ

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

Не зная, сколько вы бежите, в соответствии с поддержкой Microsoft

На компьютерах под управлением Microsoft Windows XP или новее максимальная длина строки, которую можно использовать в командной строке, составляет 8191 символ. На компьютерах под управлением Microsoft Windows 2000 или Windows NT 4.0 максимальная длина строки, которую можно использовать в командной строке, составляет 2047 символов.

Также у Linux есть ограничение на длину команды. Смотрите "Список аргументов слишком длинный": за пределами аргументов и ограничений

В Linux вы можете перекомпилировать ядро, чтобы увеличить размер страницы, но в Windows у вас нет такой опции.

Другие вопросы по тегам