다른 것 또는 프롬프트에서 Windows 배치 파일을 호출하는 여러 가지 방법. 어떤 경우에?
Windows 배치 파일 ( called.bat
또는 called.cmd
)은 다른 배치 파일 ( caller.bat
또는 caller.cmd
)이나 대화 형 cmd.exe 프롬프트에서 여러 가지 방법 으로 호출 할 수 있습니다 .
- 직접 전화 :
called.bat
- 호출 명령 사용 :
call called.bat
- cmd 명령 사용 :
cmd /c called.bat
- 시작 명령 사용 :
start called.bat
도움말 텍스트에 따라 의도 된 사용법을 구분하는 데 어려움이 있습니다. 언제 어떤 것을 사용해야합니까? 예를 들어 직접 호출 대신 '호출'명령을 사용하는 이유. 무엇이 다른가요?
다양한 관점에서 4 가지 가능성 (및 누락 된 경우 다른 항목)을 모두 분석하는 요약 보고서에 관심이 있습니다. 적합하도록 설계된 권장 사용 사례, 프로세스 생성, 실행 컨텍스트, 환경, 반환 코드 처리.
참고 : Windows XP SP3을 사용하고 있습니다.
배치 파일은 현재 cmd.exe 인스턴스 (예를 들어 탐색기에서 두 번 클릭 한 경우 새 cmd.exe 인스턴스)에 의해 실행됩니다.
# 1과 동일하며 배치 / cmd 파일 내에서 사용될 때만 효과가 있습니다. 배치 파일에서 '호출'이 없으면 상위 배치 파일이 종료되고 제어가 호출 된 배치 파일로 전달됩니다. with 'call'은 자식 배치 파일을 실행하고 부모 배치 파일은 호출 후 문으로 계속됩니다.
새 cmd.exe 인스턴스에서 배치 파일을 실행합니다.
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
'developer tip' 카테고리의 다른 글
하나의 단위 테스트는 Express로 어떻게 라우팅됩니까? (0) | 2020.09.06 |
---|---|
TortoiseGit에서 "git did not exit cleanly (exit code 128)"오류를 해결하는 방법은 무엇입니까? (0) | 2020.09.06 |
파이썬에서 좋은 기하학 라이브러리? (0) | 2020.09.06 |
Javascript 엔진 테일 호출이 최적화되어 있습니까? (0) | 2020.09.06 |
os.name, sys.platform 또는 platform.system을 언제 사용합니까? (0) | 2020.09.06 |