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%