79

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

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

关键是,当进程在 Windows 2003 Server 中运行时,一切正常。没有错误。

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

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

提前致谢。

4

11 回答 11

94

在 cmd 窗口中执行构建脚本时,我遇到了同样的问题。大约 13 次后,我得到了同样的错误。构建脚本必须确保 vcvarsall.bat 已运行,因此它每次都执行 vcvarsall.bat。

vcvarsall.bat 不够聪明,只能在path不存在的情况下添加内容,因此添加了一堆重复的条目。

我的解决方案是在我知道由 vcvarsall.bat 设置的环境变量上添加一个 if defined 检查...

if not defined DevEnvDir (
    call vcvarsall.bat
)

每次运行后检查你的路径环境变量,看看它是否在增长。如果是并且有重复项,您将需要聪明地向path. 有几种方法可以让它变得聪明。

于 2013-11-12T12:54:33.733 回答
24

在多次运行同一组命令(停止/启动应用程序服务器)后,我第一次遇到了这个错误。

当我打开一个新命令行并尝试来自新命令行控制台的命令时,错误停止了。

于 2013-11-11T22:42:02.730 回答
8

这通常是由于路径较长而发生的。我通过将 Kafka 的基本路径从C:\Program Files<Kafka_path> 替换C:\Kafka解决了这个问题

于 2020-12-27T14:43:20.503 回答
7

我意识到这已经很老了,但我遇到的另一个问题是"在我调用的命令末尾有一个。我试图打电话:

"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\..\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe""

如果你注意到,我"在行尾有两个。这导致了我的问题(当我输入引号时,Notepad++ 包括它)。删除了,一切都好。同样,可能不是您的问题,但如果其他人来寻求信息并且没有其他工作,请检查此。:)

于 2015-11-09T16:37:55.983 回答
6

有一篇关于此主题的Windows 知识库文章。他们没有提到 Windows 2008 服务器,但确实提到了其他版本的操作系统之间的大小差异,因此 2003 和 2008 之间存在差异也就不足为奇了。

至于问题的解决方案,他们的一些建议包括:

  • 修改需要长命令行的程序,使其使用包含参数信息的文件,然后在命令行中包含文件名。
  • 为文件夹和文件使用较短的名称。
  • 减少文件夹树的深度。

如果您想了解他们还有什么要说的,您可以阅读整篇文章,但这些建议看起来最有可能适用于您。

于 2013-05-29T21:19:49.773 回答
2

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

前 : 在此处输入图像描述

后 : 在此处输入图像描述

于 2021-08-05T08:37:30.497 回答
1

当需要多次调用 vcvarscall.bat 时,则:

setlocal
vcvarsall.bat x64
cl xxx.cpp
endlocal

setlocal
vcvarsall.bat x86
cl xxx.cpp
endlocal
于 2021-03-29T09:52:54.447 回答
1

我有同样的问题在窗口下启动 Zookeeper。根本原因是由于文件路径太长。我将 kafka 文件夹重新定位到更短的文件路径。例如:c:/kafka_2.13-2.6.0。然后 cd 到 bin/windows 并启动 zookeeper。有用。

于 2021-07-05T15:48:34.623 回答
1

如果文件中的空格(ansi 字符0x20)确实是不间断空格(我有0xA0,但您的可能会有所不同),也会发生这种情况。如果您从 Internet 复制/粘贴到支持 UTF-8 的编辑器,就会发生这种情况。

结果取决于窗口的当前代码页、您的编辑器等。修理:

  1. 使用十六进制编辑器
  2. 看看空间是如何表示的
  3. 搜索并替换您的代表

我使用HxD搜索并替换0xA00x20.

于 2017-06-01T15:52:25.727 回答
1

多次使用 CALL 运行另一个设置 env 的批处理将增加您正在设置的 var 的值,因此在某些时候会出现错误

调用 set path=some\path;%path%

在cmd中多次运行上述命令会产生错误

于 2019-12-11T14:48:54.393 回答
0

我也遇到了这个。

我试图运行 vcvars.bat,因为这里的其他人似乎正在尝试。

对我来说,潜在的问题似乎是我的 PATH 变量被重复的已经很长的路径污染了。修复我的路径似乎为我解决了这个问题(当然是在新终端中)。请注意,此修复并不特定于 vcvars.bat 或任何与 Visual Studio 相关的内容。

我很好奇 Cookie Butter 的解决方案是否是一种解决方法并且潜在的问题是相同的。

于 2019-05-15T13:16:30.033 回答