views:

361

answers:

2

I have a variable in my batch file and it contains the pipe symbol (this one: |) so when I echo the variable I get an error about a unrecognized internal/external command.

I need a way to either get it to echo it correctly or better yet remove everything after and including the | symbol as well as any extra spaces before it.

+1  A: 

escape it

echo \|

or wrap in quotes

echo "|"
Paul Creasey
I couldnt escape it as the variable came from another command, quotes worked though... why didn't I think of that before...Now to see if I can get all the unwanted data removed instead...
Hintswen
Putting quotes around it will cause the quotes to be output, though.
Joey
I actually was thinking unix when i wrote this, so it's pretty fail!
Paul Creasey
+2  A: 

There are several special characters that generally must be escaped when used in Windows batch files. Here is a partial list: < > & | ^ %

The escape character is ^. So to get a literal |, you should do this:

echo ^|

When the special character is in a variable, it becomes a bit harder. But if you use special syntax, you can replace characters in a variable like this:

set X=A^|B

REM replace pipe character with underscore
set Y=%X:|=_%

echo %Y%
REM prints "A_B"
bobbymcr
Anders