"输入线太长"错误的基本脚本没有明显的原因

时间:2015-08-20 11:33:18

标签: windows batch-file command-line

以下脚本

cmd /C ""set PATH=nasm\;%PATH%" & "echo %PATH%""

仅打印此内容:

The input line is too long.
The input line is too long.

为什么呢?我该如何解决这个问题?

P上。 S.这有效:

cmd /C "echo %PATH%"

这并不是:

cmd /C ""echo %PATH%""

4 个答案:

答案 0 :(得分:6)

OP的问题与我的问题略有不同,但由于没有明显的原因,我在一个非常基本的脚本中也有The input line is too long错误。

在我的情况下,不明显的原因是我之前通过递归设置我的路径直到它超过允许的大小来破坏我的环境,然后我在尝试诊断错误之前修复了问题。

在这种情况下,重新启动命令提示符就足以获得一个新的路径。

要测试您是否已经完成了这样的操作,只需通过运行不带参数的set来显示您的环境变量。在我的例子中,它显示了递归设置路径(比这里显示的要长得多,但你看到重复的部分):

C:\dev_build>set
...
Path=C:\qnx660\host\win32\x86\usr\bin;C:\qnx660\.qnx\bin;C:\qnx660\jre\bin;C:\qnx660\host\win32\x86\usr\bin;C:\qnx660\.qnx\bin;C:\qnx660\jre\bin;C:\qnx660\host\win32\x86\usr\bin;C:\qnx660\.qnx\bin;C:\qnx660\jre\bin;C:\qnx660\host\win32\x86\usr\bin;C:\qnx660\.qnx\bin;C:\qnx660\jre\bin;C:\qnx660\host\win32\x86\usr\bin;C:\qnx660\.qnx\bin;C:\qnx660\jre\bin;C:\qnx660\host\win32\x86\usr\bin;C:\qnx660\.qnx\bin;C:\qnx660\jre\bin;C:\qnx660\host\win32\x86\usr\bin;C:\qnx660\.qnx\bin;...
...

对Path做任何事情的任何进一步尝试都给了我The input line is too long

答案 1 :(得分:3)

使用两个双引号""时,cmd.exe需要一个命令 但是命令的限制大约为250个字符。

但是你不想要一个名为echo C:\windows\...的命令 并且您的set path=... & echo %path%无法正常工作,因为在执行该行之前已完成百分比扩展。

这个应该有效

cmd /v:on /C "set PATH=nasm\;%PATH% & echo ^!PATH^!"

但我无法理解为什么你不使用代码块,也许是使用setlocal

(
  setlocal EnableDelayedExpansion
  "%VS120COMNTOOLS%..\..\VC\bin\vcvars32.bat"
  set "PATH=nasm\;%PATH%"
  echo !PATH!
  endlocal
)

如果你确实需要使用cmd /c,那么它也可以包含引号,但不能 over 多个命令

cmd /v:on /C ""%VS120COMNTOOLS%..\..\VC\bin\vcvars32.bat" & set PATH=nasm\;%PATH% & echo ^!PATH^!"

答案 2 :(得分:0)

您正在达到8,192个字符的命令行长度限制。

答案 3 :(得分:0)

遇到同样的问题,实际上名称中的错误报告错误。有这个

"C:\Java\jdk1.8.0_151"\bin\java"

而不是

"C:\Java\jdk1.8.0_151\bin\java"