DOS version, some characters are reserved for specific usage(e.g. command redirection). This topic will talk about how to use the special characters without issues.
Most special characters can be escaped using the caret(
^). Take a look at the following example.
echo > Hi echo ^> Hi
This first command would not output
> Hi because
> is a special character, which means redirect output to a file. In this case, the file is named "Hi"
However in the second command,
> Hi would be outputted without any issue because the caret(
^) tells the
> to stop functioning as "redirect output to file" command, now
> is just a normal character.
Here's a list of special characters that can be escaped(taken, and edited from Rob van der Woude's page)
|!||^^!||Only required when DelayedExpansion is on|
Carets can be stacked up to the escape other carets, consider the following example.
Note: The carets in bold form are escaped.
A bit off topic here, but this is very important! An unwanted caret escape at the end of the file could cause a memory leak!
This command would leak all the memory, rendering the system completely unusable! See here for more information.
findstr, there are some special characters that require some caution on it.
There is only one character that needs escaping -
" quote. To escape it, simply add another quote next to it. So
"". Pretty simple.
Findstr comes with plenty of characters to escape, so please be very cautious. Using
\, we can escape special characters. Here's a list of special characters to escape
FOR /F statement, some characters needs escaping, here a list(taken and edited from Rob van der Woude's page)
|'||^'||Only needed in |
|`||^`||Only needed in |
|=||^=||┣ Must be escaped in |
Here is a list of other special character(s), that require(s)/may need escaping, but not mentioned above.
|[LF]||^[LF]||This trick is metioned by Mark Stang in the |
When there's an expression with a pipe the
cmd starts two threads on both sides of the pipe and the expression is parsed twice (for each side of the pipe) so carets need to be doubled.
On the left side:
On the right side: