2016-08-23 1 views
2

실행 파일의 경로가 변수에 저장되는 배치 파일에서 windows 실행 파일을 시작하려고합니다.가변 경로에 공백이 포함 된 배치 파일에서 .exe를 호출하십시오.

'C:\Program' is not recognized as an internal or external command, operable program or batch file. 

어떻게 든 문자열이 Program Files의 공간에서 종료됩니다 같은데 : 불행하게도 내 스크립트를 실행

@echo off 

set qtpath=C:\Program Files\Qt\5.7\mingw53_32\bin 
set execpath=%qtpath%\windeployqt.exe 

echo %execpath% 

%execpath% --someparams 

오류가 발생합니다.

답변

5

당신이 당신의 코드를 변경해야합니다 또한 TAB처럼

@echo off 

set "qtpath=C:\Program Files\Qt\5.7\mingw53_32\bin" 
set "execpath=%qtpath%\windeployqt.exe" 

echo "%execpath%" 

"%execpath%" --someparams 

SPACE, ,;, = 및 비 중단 영역 (ASCII 0xFF)은를 구성합니다 명령 프롬프트의cmd 토큰 화에서 벗어나려면 경로를 "" 사이에 넣으십시오. 이렇게하면 ^, ( and ), &, <, > and |과 같은 특수 문자로 인해 문제가 발생하지 않습니다.

set 명령 줄의 인용 부호는 특수 문자로 인한 문제를 다시 방지합니다. 전체 할당 표현식을 둘러 N 기 때.에 변수 값의 일부가되지 않습니다. 다음 문제가 실행할 수 있기 때문에 원치 않는 (더블) 따옴표로 인한 문자열 (예를 들어, echo "C:\%VAR%\file.txt" 반환 "C:\"some value"\file.txt")을 합치 특히

나는, 변수 값 ( set VAR="some value")에 인용 부호를 포함하지 을 추천합니다.

1

당신은 완벽합니다. 당신이 실행하려는 파일의 경로에 공백이 포함 된 경우에는 인용 부호로 둘러싸해야 :이 일을해야

@echo off 

set qtpath=C:\Program Files\Qt\5.7\mingw53_32\bin 
set execpath="%qtpath%\windeployqt.exe" 

echo %execpath% 

%execpath% --someparams 

.

인용 부호로 %execpath%을 둘러싸고 때 그것은 또한 작동합니다

"%execpath%" --someparams 
관련 문제