Batch file below:
@echo off
set filelocation=C:\Users\myself\Documents\This&That
cd %filelocation%
echo %filelocation%
pause
give the following output:
'That' is not recognized as an internal or external command,
operable program or batch file.
The system cannot find the path specified.
C:\Users\myself\Documents\This
Press any key to continue . . .
Considering I cannot change the folder name, how do I handle the "&"
You need two changes.
1) The extended set syntax with quotes prefix the variable name and at the end of the content
2) delayed expansion to use the variable in a safe way
setlocal enableDelayedExpansion
set "filelocation=C:\Users\myself\Documents\This&That"
cd !filelocation!
echo !filelocation!
Delayed expansiuon works like percent expansion, but it have to be enabled first with setlocal EnableDelayedExpansion
and then variables can expanded with exclamation marks !variable!
and still with percents %variable%
.
The advantage of the delayed expansion of variables is that the expansion is always safe.
But like the percent expansion, where you have to double percents when you need it as content, you have to escape exclamation marks with a caret when you use it as content.
set "var1=This is a percent %%"
set "var2=This is a percent ^!"