@echo off
set PTag=^<BR^>
echo %PTag%
我什么也没得到。
现在,有趣的是,如果最后的回音之后有一个空行,我得到:
The syntax of the command is incorrect.
如果我删除@echo关闭,则其实际输出
echo <BR>
我想在变量中添加各种HTML标签,然后连接这些变量来创建一个HTML,我将在文件中输出。
@echo off
set PTag=^<BR^>
echo %PTag%
我什么也没得到。
现在,有趣的是,如果最后的回音之后有一个空行,我得到:
The syntax of the command is incorrect.
如果我删除@echo关闭,则其实际输出
echo <BR>
我想在变量中添加各种HTML标签,然后连接这些变量来创建一个HTML,我将在文件中输出。
set PTag=^<BR^>
当你运行echo %PTag%
它扩展为echo <BR>
这是一个无效的重定向设置值<BR>
到PTag
。您需要使用此
set PTag=^^^<BR^^^>
逃脱内PTag
的<
和>
第一^
逃逸本身,那么下一个逃脱<
或>
您也可以使用此
set "PTag=^<BR^>"
第二种理由:内部引号^
失去它的特殊含义
如果它是一个引号(
"
)切换报价标志,如果报价标志有效,下列特殊字符不再特殊:^ & | < > ()
。How does the Windows Command Interpreter (CMD.EXE) parse scripts?
最特殊字符(
^
&
(
)
<
>
|
,也是标准定界符,
;
=
SPACETAB)只要疗法被放置在""
之间失去其特定的含义,以及""
本身不会成为变量值
的一部分,现在变量的值将^<BR^>
里面,它会扩大echo %PTag%
到
echo ^<BR^>
这是一个有效的命令
只是引用您set
:
set "PTag=^<BR^>"
echo %PTag%
当你告诉变量值就使用延迟扩展:
@echo off
setlocal EnableDelayedExpansion
set "PTag=<BR>"
echo !PTag!
谢谢。你还可以添加关于答案的解释吗?我不是很好,因为它可能很明显,因为我不知道引号可以用来包装任务。更确切地说,我不明白为什么转义字符在引号中起作用。什么时候应该决定围绕命令参数使用引号? – Axonn
现在你提到它了,我不完全确定为什么,我只知道它的工作原理:)关于被转义字符和作为行续字符我想,这个链接可能会给你一个更好的解释http:// www .robvanderwoude.com/escapechars.php –