【问题标题】:Windows batch script stops working after a few iterations几次迭代后,Windows 批处理脚本停止工作
【发布时间】:2014-05-02 16:19:55
【问题描述】:

我有一个 Windows 批处理脚本,它只为 C 编译器调用 vcavars32,根据工作目录名称推断我的 C 程序的名称,从命令行保存用户的一些内容,然后编译并运行我的程序从命令行(如果你知道 USACO 是什么,我希望这个脚本能帮助我快速自动化测试)。

该脚本在一段时间内运行良好,但在我调用它几次后它开始抱怨

 The input line is too long.
 The syntax of the command is incorrect.

它会停止工作,直到我关闭 cmd 然后重新打开一个新的 cmd 窗口。

我的批处理脚本现在看起来很像这样(我的实际脚本中还有大量 cmets 和一些 goto,以使其更方便一些,例如,如果 @987654323 则不要运行 more > %myFolder%.in @已经存在):

 call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat"
 for %%A in (".") do set "myFolder=%%~nxA"
 more > %myFolder%.in
 CL %myFolder%.c /nologo && %myFolder%.exe >nul && type %myFolder%.out
 del /q %myFolder%.exe %myFolder%.obj %myFolder%.out

我可以让我的脚本每次都能正常工作吗?为什么会出现此错误?

【问题讨论】:

  • %myFolder% 在大多数地方都没有被引用 - 它可以有空格或& 等吗?问题也可能出在vcvars32.bat
  • vcvars 每次在 path 变量中附加一些自己的目录。

标签: windows batch-file cmd


【解决方案1】:

原来jeb的评论是正确的。

看起来vcvars.bat 每次运行时都会添加到path,几次之后,我猜它太长了。

我将脚本修改为仅在尚未运行时运行 vcvars.bat,现在我不再遇到这个问题了。

【讨论】:

    猜你喜欢
    • 2020-09-28
    • 1970-01-01
    • 2013-08-20
    • 1970-01-01
    • 2022-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多