.bat에서 "cmd"를 사용하면 올바르게 해결되는 이유는 무엇입니까?

.bat에서 "cmd"를 사용하면 올바르게 해결되는 이유는 무엇입니까?

.bat 스크립트를 실행하고 완료 시 창을 활성 상태로 유지하는 올바른 방법을 검색하는 동안 두 가지 인기 있는 방법 중 하나가 "file.bat"가 자신을 참조하는 스크립트에 cmd포함하는 것임을 알게 되었습니다 .cmd /k file.bat

위의 기능적 결과를 이해하지만 개념적으로는 어떻게 올바르게 실행되고 해결되는지는 알 수 없는 것 같습니다.

/k내 자신의 교육받지 못한 추론으로 볼 때, 나는 그것이 다음과 같이 기능을 설명하는 논증 과 관련이 있다고 생각합니다 .

문자열에 지정된 명령을 수행하지만 그대로 유지됩니다.

그럼에도 불구하고 스크립트가 루프 자체를 방지할 수 있더라도 자체 실행을 중단하지 않는 방법은 무엇입니까?

이것이 매우 명백하거나 근본적인 것을 오해하고 있다면 사과드립니다. 저는 해당 주제에 대해 정식 교육이나 훈련을 받은 적이 없습니다.

편집하다:

글쎄요, 그건 제가 어리석은 일이었습니다! 답변에서 봤어요여기위에 표시된 대로 구문이 정렬되었습니다.하다스크립트를 반복하므로 적절한 맥락 없이 맹목적으로 믿기 전에 실제로 먼저 나 자신을 테스트했어야 했습니다. (그리고 저는 항상 "신뢰하되 확인하세요"라고 말합니다. 위선자입니다.

답변1

cmd해결되는지에 대한 몇 가지 좋은 설명이 있습니다.스택 오버플로- 본질적으로 cmd.exe의 전체 위치(일반적으로 ) 에 대한 시스템 환경 변수인 cmd으로 해석됩니다 .%ComSpec%C:\Windows\System32\cmd.exe

질문의 맥락에 관한 한, yourbatfile.bat 내부에 있으면 cmd /k yourbatfile.bat루프가 발생합니다. 문제 해결을 위해 창을 열어 두려면 pause창 끝/문제가 있는 섹션 뒤에 를 던지는 것이 좋습니다.

에 대한 문구는 /k다음과 같습니다여기는 좀 달라"명령 프롬프트로 돌아갑니다"라고 표시되어 있기 때문에 기본적으로 추가하는 것은 /kcmd.exe를 열고 사용하는 것과 같으며, 없음은 /k실행 창에서 명령을 실행하는 것과 같습니다.

실행을 열고 실행하여 이를 테스트할 수 있습니다 ipconfig /all. 창이 ipconfig완료되면 즉시 닫힙니다. 그러나 실행을 열고 실행하면 cmd /k ipconfig /all창이 명령 프롬프트로 돌아갑니다.

관련 정보