bat 파일 실행 중 폴더가 닫히면 CMD 창이 닫히지 않습니다.


17

이상하게 작동하는 Server 2012 R2 Standard 64 비트 가상 머신이 있습니다. 박쥐 파일이 제대로 작동하고 CMD 창이 정상적으로 닫힙니다. 그러나 bat 파일을 실행하는 동안 bat 파일이 들어있는 폴더가 닫히면 종료되지만 CMD 창이 닫히지 않습니다. 나는 가능한 가장 간단한 bat 파일을 갖기 위해 이것을 단순화했습니다. 한 줄이 들어 있습니다. 중지

  1. Windows 탐색기로 bat 파일이 들어있는 폴더를 엽니 다
  2. 박쥐 파일을 두 번 클릭하여 시작하십시오.
  3. Windows 탐색기 창을 닫습니다
  4. CMD 창에서 아무 키나 누르십시오
  5. 박쥐 파일이 완료되면 커서가 다음 줄로 이동합니다
  6. CMD 창이 유지됩니다

이것은 하나의 컴퓨터에서만 발생합니다. 이것이 왜 그런지 아는 사람이 있습니까? 테스트 VM이며 아마도 다시 빌드해야하지만 궁금합니다. 감사

간단한 bat 파일을 다음을 포함하는 파일로 교체했습니다.

@assoc .bat
@for /F "tokens=1,* delims==" %%G in ('assoc .bat') do @ftype %%H
@reg query "HKLM\Software\Microsoft\Command Processor" /v AutoRun 2>NUL
@reg query "HKCU\Software\Microsoft\Command Processor" /v AutoRun 2>NUL
@wmic process where "caption = 'cmd.exe'" get CommandLine, ParentProcessId,     ProcessID
@echo please close Windows Explorer before continuing
@pause
@wmic process where "caption = 'cmd.exe'" get CommandLine, ParentProcessId,     ProcessID
@pause

결과는 아래와 같습니다 :

.bat=batfile
batfile="%1" %*



CommandLine                                      ParentProcessId  ProcessId
C:\Windows\system32\cmd.exe /c ""D:\test.bat" "  1608             8460

please close Windows Explorer before continuing
Press any key to continue . . .
CommandLine                                      ParentProcessId  ProcessId
C:\Windows\system32\cmd.exe /c ""D:\test.bat" "  1608             8460

Press any key to continue . . .

커맨드 라인

2016 년 4 월 13 일 나는 이것을하는 동안 작업 관리자를보고 조금 더 알아 냈습니다. bat 파일을 시작하면 작업 관리자-세부 정보 창에 2 줄이 나타납니다. 1은 cmd.exe의 경우, 1은 conhost.exe의 경우입니다. 박쥐가 끝나면 cmd.exe는 사라지지만 conhost.exe는 남아 있습니다. 내가 알았던 또 다른 것은 이전에 언급 한 것처럼 Windows 탐색기 폴더를 실제로 종료 할 필요가 없다는 것입니다 ... 탐색기 창의 아무 곳이나 클릭하면됩니다. 탐색기 창의 아무 곳이나 클릭하지 않으면 bat 파일의 CMD 창이 정상적으로 닫히고 예상대로 세부 정보 창에서 두 작업이 사라집니다.


2
불행히도 나는 도울 수 없다. 그러나 귀하의 문제를 정확하게 설명하는 잘 쓰여진 질문을 제공하는 것에 대해 보완해야합니다. 포스터가 이와 같이 잘 쓰여진 질문을 작성하는 데 더 많은 시간이 걸리기를 바랍니다. 물론 Win 10 컴퓨터에서 동작을 재현 할 수 없습니다. 또한 하나의 특정 시스템에서만 동작이 표시되므로 누구나 진행중인 작업을 진단하기가 어려울 수 있습니다.
dbenham

감사합니다 @dbenham. 배치 파일 태그 아래에 귀하의 지식과 SO에 대한 지혜를 존중합니다. 저는 수퍼 유저에서 처음으로 포스터이지만 새로운 포스터에 대한 당신의 의미를 알고 있습니다. 그렇습니다. 누군가 복제 할 가능성이 없다고 동의합니다. 다른 사람이 이것을 만날 수 있기를 바랄뿐입니다. 테스트 VM 일 뿐이므로 중요하지 않습니다. 고객의 컴퓨터에서 발생한 경우에 대해 알고 싶습니다.
RGuggisberg

1
@RGuggisberg-자신의 질문을 편집 할 수 있도록 계정을 병합하십시오. 당신은 당신이 당신의 질문을 편집 표시를 추가 할 필요가 없습니다, 시스템은 당신을 위해 그것을 수행, 완전히 필요하지 않습니다.
Ramhound

1
exitCMD 창을 닫는 명령을 명시 적으로 언급 한 해결 방법과 마찬가지로 VM 중 하나에서도 동일한 문제가 발생했습니다 . 도움이 될 수 있습니다.
manjesh23

1
ConHost.exe 프로세스가 대기중인 응용 프로그램을 확인하기 위해 리소스 모니터의 대기 체인 분석 기능을 사용해 보셨습니까?
Xtremity

답변:


1

이것은 가능하지 않지만 가능한 모든 것을 배제한 것으로 보입니다. 다음 두 레지스트리 항목을 검사하여 항목이 포함되어 있는지 확인하십시오.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor

또는

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Command Processor

배치 파일을 실행할 때마다 거기에있는 모든 것이 호출되며, 파일 cmd /k이 있으면이 동작이 발생합니다.


고마워요 ... 그것도 아닙니다. 테스트 머신 일 뿐이므로 더 이상 알아 내려고하지 않습니다.
RGuggisberg

0

이것을 시도 했습니까?

@echo off
rem some code
pause
cls
exit

똑같은 것이지만 일시 정지와 동일하게 허용됩니다.

또한 왜 @를 모든 것 앞에 두는가? 나머지 명령 전에 @echo를 사용하지 않는 이유는 무엇입니까?


예 .. 이미 시도했습니다. @ 서문에 동의하십시오. 일반적으로 이것이 내가하는 일입니다. 중요하지 않습니다. 아마도 초기 테스트를 위해 명령을 보았을 것입니다.
RGuggisberg
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.