Reputation: 5117
I have 2 (maybe more in future) layers of batch files that are making my life easier up until the point I tried to add paths with spaces in them.
Batch file 1:
@echo off
set thinga=c:\final build
set thingb=\\server\deployment for final buil
echo.
echo thing a: %thinga%
echo thing b: %thingb%
echo.
call lala.bat "%thinga%" "%thingb%"
Batch file 2 (lala.bat):
@echo off
echo.
echo. Param 1 %1
echo. Param 2 %2
echo.
set BASE=%1
set TARGET=%2
echo. Want to run:
echo. doSomethingOnBaseFolder %BASE%
echo. doSomethingOnBaseSubFolder "%BASE%\bin\release\*" "%TARGET%\"
echo.
The output of this is:
doSomethingOnBaseSubFolder ""c:\final build"\bin\release\*" ""\\server\deployment for final buil"\"
But I want the output to be
doSomethingOnBaseSubFolder "c:\final build\bin\release\*" "\\server\deployment for final buil\"
Is there no way to escape the space in any other way?
Upvotes: 10
Views: 20266
Reputation: 9085
Use this syntax:
set VAR="%~1"
The %~1 is the first parameter without quotes, then put quotes around it to correctly handle paths with spaces in them. Like that you are always on the safe side.
Upvotes: 14