배치 파일 실행 후 콘솔의 자동 폐쇄를 방지하는 방법


509

파일 실행 후 콘솔이 자동으로 닫히지 않도록 배치 파일 끝에 어떤 명령을 넣을 수 있습니까?


5
탐색기에서 .cmd 파일을 두 번 클릭하여 시작했는지 (끝에 일시 중지하려는 경우) 이미 열려있는 명령 줄에서 시작했는지 감지 할 수있는 방법이 좋습니다. 후자의 경우 (특히 다른 프로그램에서 실행하는 경우) 일시 중지를 원하지 않습니다. 이 경우에 대한 좋은 해결책을 찾지 못했습니다 (일반적으로 if % NOPAUSE % 변수를 사용하지만 paremt shell이 ​​아닌 부모 프로그램에서만 작동합니다).
eckes

1
방법이 있습니다 : stackoverflow.com/questions/3551888/…
EM0

답변:


634

Windows / DOS 배치 파일에서 :

pause

좋은 "Press any key to continue . . . "메시지를 인쇄 합니다

또는 "Press any key to continue . . ."메시지를 원하지 않으면 대신 다음을 수행하십시오.

pause >nul

14
bat 파일을 두 번 클릭 할 때 여기에 제안 사항이 적용되지 않습니다. 서버 환경이므로 스크립트를 실행해야하므로 동작을 수정할 수 있습니다. 그것은 나의 목표를 바꾸지 않습니다. 명령 창을 열어두면 오류 메시지가 입력됩니다.
Henrik Erlandsson

1
네, 환경에 따라 항상 작동하는 것은 아닙니다. 더 강력한 솔루션을 보려면 아래 답변을 참조하십시오. 기본적으로 그냥 "...를 눌러 계속하려면 아무 키나"설정을 / P exitkey = 할
스티븐 마크 포드

누군가 콘솔 창없이 (예 : vbscript를 통해) 스크립트를 실행하면 작업 관리자를 통해 종료 할 때까지 중단됩니다.
Andry

maven과 같은 것이 CALL을 사용한다면, stackoverflow.com/a/52205298/4485678
Kevin Roy

일시 중지는 여기서 완벽하게 작동합니다
Davidson Lima

141

정확한 질문에 달려 있습니다!

일반적으로 .bat 파일 pause내에서 작업을 수행 합니다.

당신이 원하는 경우 cmd.exe를이 입력, 사용 유지 할 수 닫습니다하지 cmd /k파일의 끝에 명령을 사용합니다.


2
실행 대화 상자를 통해 Windows 명령을 실행하는 경우 cmd /k대신 명령 앞에 넣으 십시오. & cmd /k작동하지 않습니다.
Noumenon

68

cmd.exe를 닫지 않고 계속 입력 할 수있게하려면 cmd /k

/kWindows 웹 사이트에서 수행하는 작업 을 명확히해야 할 필요성을 느꼈습니다 .

/k : 문자열로 지정된 명령을 수행하고 계속합니다.

따라서 cmd /kbat 파일의 끝에 후속 명령이 없으면 cmd.exe나중에 사용할 수 있도록 창을 열어 둡니다.

반면에 pause배치 파일의 끝에서 프로세스를 일시 중지하고 cmd.exe첫 번째 버튼을 누르면 종료 됩니다


24

배치 파일에 명령을 사용하는 아래의 방법은 새 명령 프롬프트 창을 열고 새 창은 자동으로 종료되지 않습니다.

start "title" call abcd.exe param1 param2  
start "title" call xyz.exe param1 param2

2
필자의 경우 터미널 명령을 실행하는 동안 오류가 발생하여 '일시 중지'및 'cmd / k'명령으로 인해 오류로 인해 프로그램을 중지하는 데 도움이되지 못했습니다. 이 예제는 오류가 있고 터미널에서 꽤 멈 췄음을 보여줍니다. 감사!
HowDoYouTellForAChild

19

Maven 을 사용 하고 있고 입력을 건너 뛰고 콘솔을 닫아서 결과를 확인하지 않으 CALL려면 'mvn clean install'외에도 스크립트 에서 명령 을 사용해야합니다 .

이처럼 콘솔이 닫힙니다

ECHO This is the wrong exemple
mvn clean install
pause

이와 같이 콘솔 은 계속 열려 있습니다

ECHO This is the right exemple
CALL mvn clean install
pause

CALL명령을 사용하지 않으면 과거의 예제 중 어느 것도 작동하지 않습니다.


1
고마워요! 명령이 실패하면 프롬프트가 닫히지 않습니다.
티무르 Gilauri

1
그것은 나를 위해 일했다. 1 bat 파일에서 2 가지 differents 명령을 실행하고 싶었습니다. 그러나 첫 번째 명령 후에 프롬프트가 닫힙니다. 퍼팅 call <myCommand>이 문제를 해결 : 첫 번째 실행 후 내 프롬프트가 종료
중지

1
가장 유용한 답변
gianmarcocalbi

14

더하다 cmd.exe실행할 코드 아래에 새 줄을 .

c:\Python27\python D:\code\simple_http_server.py

cmd.exe

이것은 내가 찾던 것입니다, 감사합니다! "일시 중지"는 파이썬 스크립트가 충돌했을 때 작동하지 않습니다. 내가 원하는 것은 오류 메시지를 보는 것입니다. 지금까지 콘솔을 통해 파이썬 스크립트를 실행해야했습니다
user70960

그러나 이것은 잘 작동합니다.python script.py %1 && cmd
user70960

감사합니다! 도움이되었습니다! 파이썬 응용 프로그램을 실행하기 위해 배치 파일을 만들고있었습니다.
fez.tival

10

내 방법은 실제 배치 ( "foo.bat")를 작성하여 작업을 완료하는 것입니다. 그런 다음 다른 "start.bat"를 작성하십시오.

@echo off
cmd /k foo.bat

일회성 환경 변수를 설정할 때 이것이 매우 유용하다는 것을 알았습니다.


1
파일 cmd /k끝에 (명령없이) 넣고 그냥 foo.bat실행할 수 있습니다. 별도의 start.bat파일이 필요하지 않습니다 .
ADTC


5

게다가 pause.

set /p=

사용할 수 있습니다. 사용자 입력을 예상하고 Enter 키를 누르면 플로우를 해제합니다.

또는

runas /user:# "" >nul 2>&1

사용자 입력에서 아무것도 표시되지 않거나 명령 기록에 남아있는 것을 제외하고는 동일하게 수행됩니다.


3

가능성 1 : 2 개의 .bat 파일을 만들고 첫 번째 파일에 쓰기 만하면됩니다.

start <filename> // name of 2nd batch file
exit

배치 파일 2는 결국 닫히지 않는 파일입니다. 이제 배치 nr.1을 열면 두 번째가 시작되고 자체 복제됩니다. 두 번째가 끝나면 완전히 닫히지 않습니다 (끝에 출구를 두지 않는 한)

가능성 2 : 배치 파일 1 :

call <filename>
cls
echo End of file
pause
<any code you want>

두 번째 파일이 끝나면 파일 1로 다시 진행하여 나머지 파일을 출력합니다. 이를 통해 오류 처리기를 만들 수도 있습니다. nr.1이 충돌하면 nr.2로 이동하여 표시합니다


2

이 작은 핵은 사용자에게 키를 입력하도록 요청하고 변수 % exitkey %에 저장합니다 (이 변수는 원하는대로 호출 할 수 있음).

set /p exitkey= "Press any key to continue..."

NB : '='뒤의 공간이 매우 중요합니다



2

늦었다는 것을 알고 있지만 선호하는 방법은 다음과 같습니다.

:programend
pause>nul
GOTO programend

이런 식으로 사용자는 enter를 사용하여 종료 할 수 없습니다.


콘솔이 닫히지 못하게하는 향상된 방법이므로 예라고 생각합니다. 사용자가 키를 눌러도 콘솔은 열린 상태로 유지됩니다. 콘솔 창을 닫아야 만 사용자가 강제 종료됩니다.
tennza

2

여기에 답변에 문제가 있었 으므로이 문제를 해결했습니다.

cmd /c node_modules\.bin\tsc
cmd /c node rollup_build.js
pause

1

사용 사례에 따라 두 가지 방법이 있습니다.

1) 실행 결과를보고 나중에 닫을 수 있도록 Windows cmd 프롬프트를 열어 두려면 사용하다

pause

2) Windows cmd 프롬프트를 열어두고 명령 후 일부 명령을 실행할 수 있도록하려면; 사용하다

cmd

여기에 이미지 설명을 입력하십시오


1

마지막 박쥐 라인에 cmd를 추가하십시오. 시스템 경로를 재설정하거나 지우면 다음과 같이 전체 경로로 cmd를 시작해야합니다.

%windir%\system32\cmd.exe

예를 들어 jdk를 이전 버전으로 재설정하는 박쥐 파일이 있습니다.

PATH=C:\Program Files\Java\jdk1.6.0_45\bin;C:\apache-ant-1.7.1\bin
SET JAVA_HOME=C:\Program Files\Java\jdk1.6.0_45
%windir%\system32\cmd.exe

시스템 경로를 재설정 했으므로 전체 경로로 cmd를 실행해야하거나 시스템이 cmd.exe를 찾을 수 없습니다 .cmd를 실행하지 못하고 창을 닫으면 오류 메시지가 표시되지 않습니다. .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.