如何使用命令提示符echo命令编写带双引号的XML标记

时间:2015-10-08 12:04:32

标签: xml batch-file cmd escaping

下午好,
我想使用CMD批处理文件将最简单的标记添加到文件中,但似乎双引号破坏了聚会:

从其他StackOverflow帖子我知道双引号状态机和^"的用法(^作为转义字符)。我仍然无法使其发挥作用:
我的尝试(结果):

C:\>echo <tag variable="value">  // very naïve
The syntax of the command is incorrect.

C:\>echo "<tag variable="value">"  // let's use quotes for delimiting the string
"<tag variable="value">"

C:\>echo "<tag variable=^"value^">" // let's use the escape character
The system cannot find the path specified.

C:\>echo "<tag variable=^"value^"> // what if the state machine is not switched back?
The syntax of the command is incorrect.

C:\>echo "<tag variable=^"value"> // desperate people do weird things :-)
"<tag variable=^"value">

我还使用标记字符前面的转义字符进行了一些测试&lt;和&gt; (因为那些在CMD中有其自身的意义)但也没有好的结果 首先将条目放在变量(set test="...")中并不能解决问题 如上所述,我越来越绝望了。我唯一想做的就是将其写入文本文件:

<tag variable="value">

有人可以帮帮我吗? 提前致谢

3 个答案:

答案 0 :(得分:3)

您想要转义的字符不是",而是< 然后正确的语法就是这个:

C:\>echo ^<tag variable="value"^>

答案 1 :(得分:1)

你不应该使用“\”字符来逃避双引号吗? 像“echo”&lt; tag blabla = \“value \”&gt;“?

修改

似乎:

echo ^<tag variable=^"value^"^> 

工作正常!

答案 2 :(得分:0)

尝试delayed expansion

setlocal enableDelayedExpansion
set "tag_line=<tag variable="value">"
echo !tag_line!