2012-12-12 5 views
1

파이썬 당 Windows 쉘 cmd.exe에서 배치 파일과 명령을 실행하고 싶습니다. 그것의이 명령 :파이썬에서 쉘 명령을 실행 중 : 문자열 오류

$cmd.exe /k ""C:\Program Files(x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86 & msbuild ALL_BUILD.vcxproj"

내가 명령 프롬프트에 수동으로 줄을 입력, 그것은 작동합니다. 새 셸을 시작하고 배치 파일 vcvarsall.bat (매개 변수 x86 사용)을 실행 한 다음 셸 내에 msbuild ALL_BUILD.vcxproj를 실행합니다. 경로는 공백을 포함하고 있기 때문에 인용됩니다.

명령 "\"C : 난 항상 콘솔에이 오류가

subprocess.call(["cmd.exe", "/k", '"C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/vcvarsall.bat" x86 & msbuild ALL_BUILD.vcxproj'])

: 지금은이 명령으로 파이썬에서이 명령을 실행하려고하면

/프로그램 파일 (x86)/Microsoft Visual Studio 10.0/VC/vcvarsall.bat \ "을 (를) 찾을 수 없습니다.

왜 명령이 시작 않습니다 "\"C : 대신 내 입력 "C의 : ?? 누구든지 내가이 문제를 해결할 수있는 방법을 생각을 가지고

+1

경로의 dos8.3 형식 사용 시도 – avasal

답변

0

이 하나를 시도해보십시오

'"C:\Program Files(x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86 & msbuild ALL_BUILD.vcxproj' 

내부에서 사용할 수 없습니다 "-"(이스케이프됩니다)

+0

이미 작은 따옴표를 외부 구분 기호로 사용했습니다. 귀하의 제안과 제 3의 매개 변수 사이에 어떤 차이점이 보이지 않습니다. –

+0

미안합니다. –

+0

'shell = True' 메서드를 호출하기 위해 추가 매개 변수를 설정하려고 했습니까? –

0

"x x"은 subprocess.call에서 'x x'과 같습니다. 결국 " 중 일부를 남겨 둘 수 있습니다.

그러나 .. 시도해 보셨습니까 os.system? 의 I는이 Windows 명령 줄 참조에서 다음

import os 

os.system('cmd.exe /k ""C:\Program Files(x86)\Microsoft Visual Studio 10.0\VC vcvarsall.bat" x86 & msbuild ALL_BUILD.vcxproj"') 
0

관련 보인다

*   여러 명령

를 사용

는 명령 구분 기호로 구분 된 여러 명령을 사용할 수 있습니다 & & 문자열인데 따옴표로 묶어야합니다 (예 : "명령 & & 명령 & & 명령 "). 당신은/C 또는/K를 지정하는 경우 다음 조건이 모두가을 충족하는 경우

*   처리 인용 부호

, cmd를 프로세스는 문자열의 나머지 부분과 인용 부호 은 보존됩니다

o You do not use /s. 
o You use exactly one set of quotation marks. 
o You do not use any special characters within the quotation marks (for 
    example: &<>() @^|). 
o You use one or more white-space characters within the quotation marks. 
o The string within quotation marks is the name of an executable file. 
    If the previous conditions are not met, string is processed by examining the first 
    character to verify whether or not it is an opening quotation mark. If the first 
    character is an opening quotation mark, it is stripped along with the closing 
    quotation mark. Any text following the closing quotation marks is preserved. 
관련 문제