0

我正在尝试montage通过 ruby​​ 脚本直接在 ImageMagick 中运行带有大量参数(264)的函数。这是调用该函数的行:

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​​ 或其他方式(例如通过通配符)编辑命令时克服这个问题?我尝试更改此处提到的文件结尾,但无法正确使用语法。

4

1 回答 1

1

要做的一件事是在运行命令字符串之前检查它的长度。如果它太长,对于您所在的系统,您可能需要将其分解为更小的块。

根据Microsoft 支持,在不知道您正在运行的长度的情况下

在运行 Microsoft Windows XP 或更高版本的计算机上,您可以在命令提示符处使用的最大字符串长度为 8191 个字符。在运行 Microsoft Windows 2000 或 Windows NT 4.0 的计算机上,可以在命令提示符处使用的字符串的最大长度为 2047 个字符。

Linux 对命令的长度也有限制。请参阅“参数列表太长”:超越参数和限制

在 Linux 上,您可以重新编译内核以增加页面大小,但在 Windows 上,您没有这样的选项。

于 2019-03-14T16:21:35.007 回答