增加Windows命令参数的大小限制



我正在举办编程谜题比赛;代号高尔夫叫做善与恶。当我写挑战时,我没有预料到我现在收到了50多份提交。我现在必须以某种方式发送一个略大于58,000个字符的Windows命令,并且我预计这个数字还会增长。这可能吗?

我用来执行其他提交的代码如下(在Java中):
proc = Runtime.getRuntime().exec(command + " " + history);
  • command类似于python angel.pycscript //nologo PiHart.vbs
  • history是大于Windows可以处理
  • 的参数。

当命令加上历史记录超过32,000个字符时,我得到IOException:

CreateProcess error=206,文件名或扩展名太长

记住,我不能随便改变规则。PPCG社区不能容忍规则更改使现有提交无效。我制定的临时规则只是将提交的内容分成可管理的分组,然后分批进行竞赛。这不会破坏任何提交,但可能会伤害那些期待更大游戏群体的提交者。

我必须承认,我还没有详细研究过cgse问题,但是对于参赛者来说,仅仅将输入模式从命令行参数更改为标准输入是不是太麻烦了?

因为32K的最大命令行长度限制实际上是不可更改的。

EDIT:好吧,稍微研究一下答案,它们大多数都是微不足道的(并且在高级语言中),因此更改输入格式可能是可以容忍的。如果有疑问,可以由你来做,不要打扰原来的实现者(有一些人跳出来发布答案,再也不回应评论,他们可能也不会改变他们的代码)。

另一个选项:这些答案中有多少是windows特有的?我认为在Linux上命令行长度限制是可以调整的。在这个网站上,我是一个相当孤独的PowerShell高尔夫球手,大多数人都倾向于用可移植到其他操作系统的语言编写程序(这些语言也往往获得最多的支持)。您可以尝试在Linux上运行大多数提交,并针对不同的输入格式修复特定于windows的提交。你仍然有很多工作要做,但也许比让其他人做更多的工作更容易证明。

你可以向微软记录一个错误,他们可能有一天会为你修复它,假设他们没有指出这可能会破坏向后兼容性,这是一个不修复错误的好借口。

或者您可以将命令写入批处理文件并运行批处理文件;)

最新更新