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

时间:2014-07-14 15:51:48

标签: java windows

我正在Programming Puzzles & Code Golf举办一场名为Good Versus Evil的比赛。当我写下挑战时,我没想到我现在有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社区不能容忍规则更改,这会使现有提交无效。我所拥有的临时规则只是将提交的内容划分为可管理的容器,然后分批运行竞争。这并没有打破任何提交,但它可能会伤害那些期待更大游戏组的提交。

2 个答案:

答案 0 :(得分:3)

我必须承认,我还没有详细查看过cgse问题,但是参赛者只需要将命令行参数的输入方案更改为stdin就太麻烦了吗?

因为最大命令行长度限制为32K is effectively unchangeable

编辑:好的,稍微查看答案,它们大部分都是微不足道的(在高级语言中),因此更改输入格式可能是容忍的。如果有疑问,可以由你完成,不要打扰原来的实施者(有些人弹出来发布答案,再也不会对评论作出反应,他们可能也不会改变他们的代码。)

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

答案 1 :(得分:-1)

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

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

相关问题