공백이있는 경로를 배치 파일에 매개 변수로 전달하십시오. 나는 여러 인용문과 조합을 시도했다. %1vcvarsx86_amd64.bat, 그러나

first.bat에서 나는

var5=C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_amd64\
CALL scripts\vc64.bat %var5%

그리고 스크립트 \ vc64.bat에서 나는

SET var6=%1vcvarsx86_amd64.bat
CALL %var6%

그러나 나는 얻는다 : 'C:\Programvcvarsx86_amd64.bat' is not internal or external command..... 오류.

var5에 할당 된 경로에 공백이없는 경우에는 문제가 없습니다.

나는 여러 인용문과 조합을 시도했다. %1vcvarsx86_amd64.bat, 그러나 변화 없음.

공백이있는 경로를 사용하려면 어떻게해야합니까?


더 정확히 말하면 C : \ a b c \

In first.bat:
     SET var6=C:\a b c\  =====>  '"C:\avcvarsx86_amd64.bat"' is not.....`
     SET var6="C:\a b c\" ====>   There should not be a b
     SET var6=C:\a\ b\ c\ ====>    Can't find the specified path
     SET var6=C:\a b c\ + Using "%var6" ====> There should not be a b

업데이트 : 여기 예제가 있습니다. b를 ab로 변경하십시오.

C : \의 call.bat

@ECHO OFF

SET var5=C:\a b\
CALL C:\1.bat "%var5%"

pause

1. 박쥐 C : \

@ECHO OFF

SET var6=%~1Test.bat
CALL %var6%

RMDIR /S C:\NoWorry

C : \ a b에있는 Test.bat
C : \ ab에있는 Test.bat

@ECHO OFF

RMDIR /S C:\ThereIsNoSuchFolder


답변

공백이있는 매개 변수를 전달하려면 매개 변수를 인용해야합니다. 다음을 사용하여 따옴표를 제거 할 수 있습니다. %~1.

그래서 전체 스크립트는 다음과 같이 보일 것입니다.

SET var5=C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_amd64\
CALL scripts\vc64.bat "%var5%"

SET var6=%~1vcvarsx86_amd64.bat
CALL %var6%