Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 增加Windows命令参数的大小限制_Java_Windows - Fatal编程技术网

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

Java 增加Windows命令参数的大小限制,java,windows,Java,Windows,我正在进行一场比赛。当我写挑战时,我没有预料到我现在有50多份提交。我现在必须以某种方式发送一个略大于58000个字符的Windows命令,我预计这个数字还会增加。这可能吗 我用于执行其他提交的代码如下(Java): proc=Runtime.getRuntime().exec(命令+“”+历史记录); 命令类似于python angle.py或cscript//nologo PiHart.vbs history是一个变大到Windows无法处理的参数 当命令加上历史增长超过32000个字

我正在进行一场比赛。当我写挑战时,我没有预料到我现在有50多份提交。我现在必须以某种方式发送一个略大于58000个字符的Windows命令,我预计这个数字还会增加。这可能吗

我用于执行其他提交的代码如下(Java):

proc=Runtime.getRuntime().exec(命令+“”+历史记录);
  • 命令
    类似于
    python angle.py
    cscript//nologo PiHart.vbs
  • history
    是一个变大到Windows无法处理的参数
当命令加上历史增长超过32000个字符时,我得到一个IOException:

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


记住,我不能只是改变规则。PPCG社区不能容忍使现有提交无效的规则更改。我制定的临时规则只是将参赛作品分成可管理的豆荚,然后分批进行比赛。这不会破坏任何提交,但可能会伤害那些希望获得更大播放群的提交人。

你可以将一个bug记录到Microsoft,他们可能会在某一天为你修复它,前提是他们没有指出这可能破坏向后兼容性,这是不修复bug的一个很好的借口


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

我必须承认,我还没有详细研究cgse问题,但是仅仅将输入方案从命令行参数更改为stdin,对参赛者来说会不会太费力

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

EDIT:好吧,仔细研究一下答案,它们基本上都很琐碎(用高级语言),因此更改输入格式可能是可以接受的。如果有疑问,您可以不打扰最初的实现者(有些人会弹出来发布答案,并且不再对评论做出反应,他们可能也不会更改代码)


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

要求57个人更改57个程序的输入格式有点过分。任何不遵守的人都将被取消资格。我仍然认为你的答案是正确的,但也许其他人有一个更有用的解决方法,使发送的参数不一定来自命令行。如果更改对程序是透明的,那对我来说就足够了。批处理文件的命令行长度限制只有8K。这比CreateProcess更糟糕。这也是不可压缩的,因为它取决于
UNICODE\u字符串的布局