【问题标题】:"was unexpected at this time."“这个时候出乎意料。”
【发布时间】:2011-12-07 20:22:02
【问题描述】:

我在一个批处理文件上运行这个命令:

for %I in (*.txt *.doc) do copy %I c:\test2

...它不断返回:

这个时候出乎我的意料。

这个错误的原因是什么?

【问题讨论】:

  • 有种放错地方的感觉
  • 有没有走进一个房间,感觉每个人都在谈论你?
  • 这应该在 T 恤上。

标签: windows batch-file error-handling arguments


【解决方案1】:

如果您在批处理/cmd 文件中运行,则需要 加倍 % 标记:

for %%i in (*.txt *.doc) do copy %%i c:\test2

单个% 变体只能在命令行中使用。

【讨论】:

    【解决方案2】:

    如果从批处理文件运行,变量需要用两个百分号表示,例如%%I,只能在您使用的命令行中

    【讨论】:

      【解决方案3】:

      我遇到了从名为 *.cmd 的文件中收到此错误的情况。当我尝试访问批处理命令的第一个参数时出现错误:

      if %1 EQU ""
      

      一旦我在第一个参数的符号周围加上引号,警告信息就消失了:

      if "%1" EQU ""
      

      【讨论】:

        【解决方案4】:

        不是问题的直接答案,但如果您在任何程序、批处理命令等中遇到此消息,那么它很可能与您的 PATH 包含 " 字符有关。

        例如,在 Atom 编辑器中,我在设置视图中收到消息。

        "\"GNU was unexpected at this time
        

        这是由于另一个程序在我的 PATH 中放入了以下条目

        ...;C:\"Program Files"\"GNU ARM Embedded;..."
        

        因此,反斜杠字符被某些程序读取为转义,这会导致问题,因为它不是路径名分隔符而是简单字符。

        我的解决方案是从 PATH 中删除那些 ",一切正常。

        ...;C:\Program Files\GNU ARM Embedded;...
        

        PS:我怀疑这是否会影响可能不支持路径名中的空格的原始程序(在这种情况下是 GNU ARM Embedded)。如果有更深入的人可以在 cmets 中澄清,我会更新我的帖子。

        希望对你有帮助

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-09-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-09-11
          • 2018-07-14
          相关资源
          最近更新 更多