공백이있는 경로를 배치 파일에 매개 변수로 전달하십시오.


5

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

단일 공백을 백 슬래시로 이스케이프 처리해 보셨습니까 ( bla\ blub ) 또는 전체 경로를 따옴표로 묶습니다 ( "bla blub" )?
feeela

답변:


7

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

이것은 나를 준다. 1> There should not be Files。
user565739

그것은 나를 위해 잘 작동, 나는 실종됐다. set 대답에서 지금 시도하십시오.
Bali C

"% var5"를 사용하면 다음과 같은 오류가 발생합니다. There should not be..... 나는 이유를 모른다.
user565739

% (변수 이름)을 사용하여 따옴표를 사용하면 오류가 발생하고 vc64.bat를 호출 할 수 없습니다. 따옴표가 없으면 vc64.bat를 호출 할 수 있지만 매개 변수가 좋지 않습니다.
user565739

너는 다음을 사용해야한다. "%var5%" ~와 % 각면에 서명하십시오.
Bali C
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.