developer tip

다른 것 또는 프롬프트에서 Windows 배치 파일을 호출하는 여러 가지 방법.

optionbox 2020. 9. 6. 09:29
반응형

다른 것 또는 프롬프트에서 Windows 배치 파일을 호출하는 여러 가지 방법. 어떤 경우에?


Windows 배치 파일 ( called.bat또는 called.cmd)은 다른 배치 파일 ( caller.bat또는 caller.cmd)이나 대화 형 cmd.exe 프롬프트에서 여러 가지 방법 으로 호출 할 수 있습니다 .

  1. 직접 전화 : called.bat
  2. 호출 명령 사용 : call called.bat
  3. cmd 명령 사용 : cmd /c called.bat
  4. 시작 명령 사용 : start called.bat

도움말 텍스트에 따라 의도 된 사용법을 구분하는 데 어려움이 있습니다. 언제 어떤 것을 사용해야합니까? 예를 들어 직접 호출 대신 '호출'명령을 사용하는 이유. 무엇이 다른가요?

다양한 관점에서 4 가지 가능성 (및 누락 된 경우 다른 항목)을 모두 분석하는 요약 보고서에 관심이 있습니다. 적합하도록 설계된 권장 사용 사례, 프로세스 생성, 실행 컨텍스트, 환경, 반환 코드 처리.

참고 : Windows XP SP3을 사용하고 있습니다.


  1. 배치 파일은 현재 cmd.exe 인스턴스 (예를 들어 탐색기에서 두 번 클릭 한 경우 새 cmd.exe 인스턴스)에 의해 실행됩니다.

  2. # 1과 동일하며 배치 / cmd 파일 내에서 사용될 때만 효과가 있습니다. 배치 파일에서 '호출'이 없으면 상위 배치 파일이 종료되고 제어가 호출 된 배치 파일로 전달됩니다. with 'call'은 자식 배치 파일을 실행하고 부모 배치 파일은 호출 후 문으로 계속됩니다.

  3. 새 cmd.exe 인스턴스에서 배치 파일을 실행합니다.

  4. Start는 새 창에서 새 cmd.exe 인스턴스의 배치 파일을 실행하고 호출자는 완료를 기다리지 않습니다.


여기 주석에서 명확하지 않은 한 가지 : 이름 만 사용하여 다른 배치 파일을 호출하면 (원래 질문의 경우 # 1) 호출하는 배치 파일에서 실행 이 중지 됩니다. 예를 들어, 다음 줄에서 :

called.bat
echo Hello

'echo Hello'라인 (및 그 뒤에 오는 모든 항목)은 호출되지 않습니다. 'call'키워드를 사용하면 호출 후 실행이 재개됩니다. 따라서이 경우 :

call called.bat
echo Hello

'echo Hello'라인이 호출됩니다.

또한 called.bat 파일에 설정된 모든 변수도 호출 프로세스로 다시 전달됩니다.

다음 줄이있는 'called.bat'파일을 상상해보세요.

set MYVAR=hello

그런 다음 % MYVAR %는 다음을 사용하는 경우 호출 배치 파일에서 사용할 수 있습니다.

call called.bat

그러나, 그것은 사용하지 않을 것입니다

REM starts a new cmd.exe process
start called.bat   

REM stops and replaces current cmd.exe process with a new one
called.bat        

참고 URL : https://stackoverflow.com/questions/2607856/several-ways-to-call-a-windows-batch-file-from-another-one-or-from-prompt-which

반응형