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

Я пытаюсь запустить функцию 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 Ответ

1 голос
/ 14 марта 2019

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

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

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

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

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

...