10

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?

efotinis
  • 14,565
  • 6
  • 31
  • 36
My Other Me
  • 5,007
  • 6
  • 41
  • 48

1 Answers1

14

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.

Helge Klein
  • 8,829
  • 8
  • 51
  • 71