以下脚本
cmd /C ""set PATH=nasm\;%PATH%" & "echo %PATH%""
只打印这个:
The input line is too long. The input line is too long.
为什么? 我怎样才能解决这个问题?
PS这工作:
cmd /C "echo %PATH%"
这不是:
cmd /C ""echo %PATH%""
使用两个双引号""
,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
那么它也可以包含引号,但不能覆盖多个命令
cmd /v:on /C ""%VS120COMNTOOLS%..\..\VC\bin\vcvars32.bat" & set PATH=nasm\;%PATH% & echo ^!PATH^!"
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;... ...
任何进一步的尝试任何东西都给了我The input line is too long
您正在命中8,192个字符的命令行长度限制。