How can I add greater than and less than into a batch file variable
When I try
@echo off
set PTag=^<BR^>
echo %PTag%
I get nothing.
Now what's interesting is that if there's an empty line after the last echo, I get:
The syntax of the command is incorrect.
If I remove the @echo off, then it actually outputs
echo <BR>
I want to add various HTML tags inside variables and then concatenate these variables to create an HTML that I will output in a file.
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
Just quote your set
:
set "PTag=^<BR^>"
echo %PTag%
Just use Delayed Expansion when you show the variable value:
@echo off
setlocal EnableDelayedExpansion
set "PTag=<BR>"
echo !PTag!