“这时候出乎意料。”

问题描述 投票:0回答:5

我正在批处理文件上运行此命令:

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

...并且它不断返回:

这个时候我是出乎意料的。

这个错误的原因是什么?

windows batch-file error-handling arguments
5个回答
64
投票

如果您在批处理/cmd 文件中运行,则需要 double

%
标记:

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

单个

%
变体仅适用于命令行。


5
投票

如果从批处理文件运行,变量需要用两个百分号表示,如

%%I
,仅在命令行中使用一个


3
投票

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

if %1 EQU ""

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

if "%1" EQU ""

2
投票

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

"
字符的 PATH 相关。

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

"\"GNU was unexpected at this time

这是由于不同的程序在我的 PATH 中放入了以下条目

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

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

我的解决方案是从路径中删除那些

"
,一切正常。

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

PS:我怀疑这是否会影响原始程序(在本例中为 GNU ARM Embedded),该程序可能不支持路径名中的空格。如果有更多见解的人可以在评论中澄清,我会更新我的帖子。

希望这有帮助


0
投票

我遇到了这个问题,并用三步解决了兄弟:

  • 删除一个flutter sdk并下载最新的flutter SDK。
  • 打开环境变量并更改flutter SDK的路径
  • 重启电脑并打开vs运行flutter doctor,就可以了
© www.soinside.com 2019 - 2024. All rights reserved.