我在执行bat文件时遇到问题。经过一段时间后,我得到“输入行太长”的错误。
bat文件的结构很简单。有一个主bat文件调用10个其他bat文件,负责更新我的系统模块的数据。在更新数据bat文件中,我的系统的命令(.cmd文件)有很多调用,负责通过一些计算来更新数据。
关键是,当进程在Windows 2003 Server中运行时,它没问题。没有错误。
然后,当它升级到Windows 2008 Server时,我执行主bat文件,几个小时后我得到“输入行太长”错误。我甚至无法在该cmd窗口中手动执行更新的数据蝙蝠中包含的任何命令。但是,如果我关闭cmd窗口并打开一个新窗口,我可以毫无错误地执行命令。
有人有同样的问题吗?还是一个解决方案?
提前致谢。
答案 0 :(得分:64)
在cmd窗口中执行构建脚本时遇到同样的问题。大约13次后我得到了同样的错误。构建脚本必须确保运行vcvarsall.bat,以便每次都执行vcvarsall.bat。
vcvarsall.bat不够聪明,如果它们还没有添加到path
,那么就会添加一些重复的条目。
我的解决方案是在环境变量上添加if定义的检查,我知道这是由vcvarsall.bat设置的......
if not defined DevEnvDir (
call vcvarsall.bat
)
每次运行后检查您的路径环境变量,看它是否在增长。如果是,并且存在重复项,则需要明智地向path
添加内容。有几种方法可以很聪明。
答案 1 :(得分:14)
我在运行相同的一组命令(停止/启动应用程序服务器)后第一次发生此错误很多次。
当我打开一个新命令行并尝试使用新命令行控制台中的命令时,错误停止了。
答案 2 :(得分:7)
我意识到这已经很老了,但我遇到的另一个问题是在我打电话的命令末尾有一个"
。我试图打电话:
"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\..\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe""
如果你注意到,我在行尾有两个"
。这导致了我的问题(当我输入引号时,Notepad ++包括它)。删除了,一切都很好。再一次,可能不是你的问题,但如果有其他人来寻求信息而没有其他工作,请检查一下。 :)
答案 3 :(得分:5)
这个主题有一个Windows knowledge base article。他们没有提到Windows 2008服务器,但他们确实提到了其他版本的操作系统之间的大小差异,所以2003年和2008年之间存在差异就不足为奇了。
至于问题的解决方案,他们的一些建议包括:
- 修改需要长命令行的程序,以便它们使用包含参数信息的文件,然后在命令行中包含该文件的名称。
- 为文件夹和文件使用较短的名称。
- 减少文件夹树的深度。
如果您想了解他们还有什么要说的话,您可以阅读整篇文章,但这些建议看起来最适合您。
答案 4 :(得分:2)
这通常是由于路径较长而发生的。我通过将 Kafka 的基本路径从 C:\Program Files
答案 5 :(得分:1)
当需要多次调用vcvarscall.bat时,则:
setlocal
vcvarsall.bat x64
cl xxx.cpp
endlocal
setlocal
vcvarsall.bat x86
cl xxx.cpp
endlocal
答案 6 :(得分:0)
如果文件中的空格(ansi字符0x20
)确实是非破坏空格(我有0xA0
,但您的空格可能不同),也会发生这种情况。如果您从互联网复制/粘贴到UTF-8识别编辑器,则会发生这种情况。
结果取决于Windows的当前代码页,您的编辑器等。修复:
我使用HxD搜索并将0xA0
替换为0x20
。
答案 7 :(得分:0)
我也遇到了这个问题。
我正在尝试运行vcvars.bat,就像这里的其他人正在尝试那样。
对我来说,潜在的问题似乎是我的PATH变量被重复已经很长的路径所污染。解决我的问题似乎对我来说解决了这个问题(当然是在新终端中)。请注意,此修补程序并非特定于vcvars.bat或与Visual Studio相关的任何内容。
我很好奇Cookie Butter的解决方案是否是一种解决方法,其根本问题是否相同。
答案 8 :(得分:0)
多次使用CALL运行另一个设置了env的批处理将增加您所设置的var的值,因此有时会出现错误
通话设置path = some \ path;%path%
在cmd中多次运行上述命令会产生错误
答案 9 :(得分:0)
我在窗口下启动zookeeper时遇到了同样的问题。根本原因是由于文件路径太长。我将 kafka 文件夹重新定位到较短的文件路径。例如:c:/kafka_2.13-2.6.0。然后cd到bin/windows并启动zookeeper。它有效。
答案 10 :(得分:0)