.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
다음과 같습니다여기는 좀 달라"명령 프롬프트로 돌아갑니다"라고 표시되어 있기 때문에 기본적으로 추가하는 것은 /k
cmd.exe를 열고 사용하는 것과 같으며, 없음은 /k
실행 창에서 명령을 실행하는 것과 같습니다.
실행을 열고 실행하여 이를 테스트할 수 있습니다 ipconfig /all
. 창이 ipconfig
완료되면 즉시 닫힙니다. 그러나 실행을 열고 실행하면 cmd /k ipconfig /all
창이 명령 프롬프트로 돌아갑니다.