Bit of a tricky one. How can I correctly escape the following in a batch file?
echo /? display this help text
This particular combination of characters is treated as an "ECHO /?" command:
C:\Batch>ECHO /? display this help text
Displays messages, or turns command-echoing on or off.
ECHO [ON | OFF]
ECHO [message]
Type ECHO without parameters to display the current echo setting.
It does not respond to caret (^) escaping, ie. I've tried ^/? /^? and ^/^?.
NB: As a workaround, I found that inserting other characters in between is enough to bypass the ECHO command line processor, eg:
echo ... /? display this help text
Still, this is not ideal and I wondered if there was a way to acheive the desired output, namely with /? at the start of the echoed message.
For escaping echo arguments, you can use the alternative syntax
echo.
:For escaping echo arguments exists many variants, like
echo.
,echo:
,echo=
But only
echo(
seems to be secure against any appended text.These one fails, if files exists like
echo
,echo[
,echo]
orecho+
These one fails, if a file in the current directory exists named my.bat
These one fails independet of a file
Only the
echo(
seems to be always safe against any content