set PTag=^<BR^>
sets the value <BR>
to PTag
When you run echo %PTag%
it expands to echo <BR>
which is an invalid redirection. You need to escape the <
and >
inside PTag
by using this
set PTag=^^^<BR^^^>
The first ^
escapes itself, then the next one escapes <
or >
You can also use this
set "PTag=^<BR^>"
Reason for the second way: inside quotes ^
loses its special meaning
If it is a quote ("
) toggle the quote flag, if the quote flag is active, the following special characters are no longer special: ^ & | < > ( )
.
How does the Windows Command Interpreter (CMD.EXE) parse scripts?
most special characters (^
&
(
)
<
>
|
and also the standard delimiters ,
;
=
SPACE TAB) lose their particular meaning as soon as ther are placed in between ""
, and the ""
themselves do not become part of the variable value
Special Characters in Batch File
Now the variable will have the value ^<BR^>
inside it, and it'll expand echo %PTag%
to
echo ^<BR^>
which is a valid command