How do you strip quotes out of an ECHO'ed string in a Windows batch file? How do you strip quotes out of an ECHO'ed string in a Windows batch file? windows windows

How do you strip quotes out of an ECHO'ed string in a Windows batch file?


The call command has this functionality built in. To quote the help for call:

 Substitution of batch parameters (%n) has been enhanced.  You can now use the following optional syntax: %~1         - expands %1 removing any surrounding quotes (")

Here is a primitive example:

@echo offsetlocalset mystring="this is some quoted text"echo mystring=%mystring%call :dequote %mystring%echo ret=%ret%endlocalgoto :eof:dequotesetlocalrem The tilde in the next line is the really important bit.set thestring=%~1endlocal&set ret=%thestring%goto :eof

Output:

C:\>dequotemystring="this is some quoted text"ret=this is some quoted text

I should credit the 'environment variable tunneling' technique (endlocal&set ret=%thestring%) to Tim Hill, 'Windows NT Shell Scripting'. This is the only book I have ever found that addresses batch files with any depth.


The following approach can be used to print a string without quotes:

echo|set /p="<h1>Hello</h1>"

pushing this string into file:

echo|set /p="<h1>Hello</h1>" > test.txt

To check:

type test.txt


You can use the %var:x=y% construction that replaces all x with y.

See this example what it can do:

set I="Text in quotes"rem next line replaces " with blanksset J=%I:"=%echo original %I%rem next line replaces the string 'in' with the string 'without' echo stripped %J:in=without%