Ошибка запуска функции 'монтажа' в 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 у вас нет такой опции.