BAT文件中的“输入行太长”错误

时间:2013-05-29 18:57:35

标签: windows batch-file

我在执行bat文件时遇到问题。经过一段时间后,我得到“输入行太长”的错误。

bat文件的结构很简单。有一个主bat文件调用10个其他bat文件,负责更新我的系统模块的数据。在更新数据bat文件中,我的系统的命令(.cmd文件)有很多调用,负责通过一些计算来更新数据。

关键是,当进程在Windows 2003 Server中运行时,它没问题。没有错误。

然后,当它升级到Windows 2008 Server时,我执行主bat文件,几个小时后我得到“输入行太长”错误。我甚至无法在该cmd窗口中手动执行更新的数据蝙蝠中包含的任何命令。但是,如果我关闭cmd窗口并打开一个新窗口,我可以毫无错误地执行命令。

有人有同样的问题吗?还是一个解决方案?

提前致谢。

11 个答案:

答案 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 替换为 C:\Kafka< 解决了这个问题/em>

答案 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的当前代码页,您的编辑器等。修复:

  1. 使用十六进制编辑器
  2. 查看空间的表示方式
  3. 搜索并替换您的陈述
  4. 我使用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)

将文件夹名称重命名为 Kafka 。它对我来说很好。关闭 cmd 并重新启动它。那肯定会很好用!!

之前: enter image description here

之后: enter image description here