如何用冒号回显消息?

时间:2017-08-31 14:23:55

标签: windows batch-file

这看起来很简单,但我很困惑 - 一直在搜索许多几乎匹配的问题,但却无法找到答案。

我想做的就是这样:

echo c:\another\test\file.h(22,11) : warning 123: this is a test warning

但是这会产生错误:: was unexpected at this time

所以我试过了:

echo "c:\another\test\file.h(22,11) : warning 123: this is a test warning"

产生:"c:\another\test\file.h(22,11) : warning 123: this is a test warning"。但我不想要报价。所以我尝试使用转义字符" ^":

echo c^:\another\test\file.h(22,11) ^: warning 123^: this is a test warning

但这没有效果。我怎样才能做到这一点?

更新

这行代码在if块中,这似乎有所不同!:

if exist "somefile" ( echo c:\another\test\file.h(22,11) : warning 123: this is a test warning )

1 个答案:

答案 0 :(得分:5)

我相信你的命令行放在一个paranthesised的代码块中,例如:

if exist "c:\another\test\file.h" (
    echo c:\another\test\file.h(22,11) : warning 123: this is a test warning
)

因此)命令行中的结束echo被解释为整个块的结束,将: warning 123: this is a test warning部分保留为无效的命令行。

要解决此问题,您需要在)前面转义^ cmd,这是if exist "c:\another\test\file.h" ( echo c:\another\test\file.h(22,11^) : warning 123: this is a test warning ) 的转义字符:

:

因此warning: ...前面的冒号{{1}}实际上并没有引起问题。