2017-04-11 70 views
1

当我尝试我如何添加大于和小于到一个批处理文件变量

@echo off 
set PTag=^<BR^> 
echo %PTag% 

我什么也没得到。

现在,有趣的是,如果最后的回音之后有一个空行,我得到:

The syntax of the command is incorrect. 

如果我删除@echo关闭,则其实际输出

echo <BR> 

我想在变量中添加各种HTML标签,然后连接这些变量来创建一个HTML,我将在文件中输出。

回答

3

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)只要疗法被放置在""之间失去其特定的含义,以及""本身不会成为变量值

Special Characters in Batch File


的一部分,现在变量的值将^<BR^>里面,它会扩大echo %PTag%

echo ^<BR^> 

这是一个有效的命令

3

只是引用您set

set "PTag=^<BR^>" 
echo %PTag% 
+0

谢谢。你还可以添加关于答案的解释吗?我不是很好,因为它可能很明显,因为我不知道引号可以用来包装任务。更确切地说,我不明白为什么转义字符在引号中起作用。什么时候应该决定围绕命令参数使用引号? – Axonn

+1

现在你提到它了,我不完全确定为什么,我只知道它的工作原理:)关于被转义字符和作为行续字符我想,这个链接可能会给你一个更好的解释http:// www .robvanderwoude.com/escapechars.php –

1

当你告诉变量值就使用延迟扩展:

@echo off 
setlocal EnableDelayedExpansion 

set "PTag=<BR>" 
echo !PTag! 
相关问题