2017-05-18 4 views
1

다른 배치 파일 (예 : Call a subroutine in a batch from another batch file) 내에서 서브 루틴을 호출하는 방법에 대한 몇 가지 예제를 살펴 봤지만 외부 배치 파일은 처음부터 끝까지 일반적인 방법으로 실행됩니다. 호출 된 함수는 무시되거나 건너 뜁니다. .파일 이름에 공백이있는 다른 배치 파일에서 서브 루틴을 호출 하시겠습니까?

:: main batch file.cmd where the subroutine is called from 
CALL "second batch file.cmd" :SUBROUTINE 
goto :EOF 

:: second batch file.cmd contents 

ECHO IGNORE THIS 
goto :EOF 

:SUBROUTINE 
ECHO SUBROUTINE CALLED FROM 'main batch file.cmd'! 
goto :EOF 

이 작동 안된다

나는 그것이 외부 배치 파일의 공백으로 뭔가를 할 것 같아요? 나에게는하지 않습니다

+4

난 당신이 혼합 몇 가지 개념을 가지고 생각합니다. 이 줄 :'CALL '두 번째 배치 file.cmd ": SUBROUTINE"는 첫 번째 매개 변수로 전달 된': SUBROUTINE' 문자열로 "second batch file.cmd"라는 외부 배치 파일을 호출하는 것을 의미합니다. 이러한 문자열은 평소대로'% 1' 문자를 통해 호출 된 배치 파일에 들어갈 수 있습니다. 배치 파일의 첫 번째 매개 변수는'goto % 1' 명령으로 호출 된 배치 파일을 시작하지 않는 한 그러한 파일의': SUBROUTINE' 레이블과 _no relation_를가집니다. https://stackoverflow.com/questions/11576270/batch-file-how-to-call-another-batch-file-at-a-specified-label-or-call-and-immed – Aacini

+0

이제 모든 것이 의미가 있습니다. 설명해 주셔서 감사합니다, Aacini :-) –

답변

0

/두 번째 배치 파일의 첫 번째 줄 입력 :

IF "%1"==":SUBROUTINE" GOTO :SUBROUTINE 
+0

제가 배치 파일의 일부에서이 방법을 사용하고 있었지만 위에 보여준 방법으로도 작동해야한다고 가정했습니다. 당신이 실례를 들었으므로, 당신의 답을 해결책으로 표시했습니다. 감사합니다 thx1138v2 ;-) –