Eu tenho uma máquina virtual Server 2012 R2 Standard de 64 bits que está agindo de forma estranha. Os arquivos bat funcionam bem e a janela do CMD fecha normalmente; mas se a pasta que contém o arquivo bat for fechada durante a execução do arquivo bat, ela será concluída, mas a janela do CMD não fechará. Eu simplifiquei isso a ponto de ter o arquivo bat mais simples possível. Contém 1 linha. pausa
- Abra a pasta que contém o arquivo bat com o Windows Explorer
- Inicie o arquivo bat clicando duas vezes nele
- Feche a janela do Windows Explorer
- Pressione qualquer tecla na janela CMD
- O cursor se move para a próxima linha quando o arquivo bat for concluído
- A janela CMD permanece
Isso acontece apenas em uma máquina. Alguém sabe por que isso pode ser? É uma VM de teste e talvez deva ser reconstruída, mas isso me deixa curioso. obrigado
Substituí meu arquivo bat simples por um que contenha o seguinte:
@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
Os resultados são mostrados abaixo:
.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 . . .
Linha de comando
13/04/2016 Eu descobri um pouco mais olhando o Gerenciador de tarefas enquanto fazia isso. Quando inicio o arquivo bat, duas linhas aparecem na janela Gerenciador de tarefas - Detalhes ... 1 para cmd.exe e 1 para conhost.exe. Quando o bastão termina, o cmd.exe desaparece, mas o conhost.exe permanece. Outra coisa que notei é que você realmente não precisa sair da pasta Windows Explorer, como afirmei anteriormente ... tudo o que você precisa fazer é clicar em qualquer lugar da janela do Explorer. Se eu não clicar em nenhum lugar da janela do Explorer, a janela CMD do arquivo bat será fechada normalmente e as duas tarefas desaparecerão da janela de detalhes, como seria de esperar.
fonte
exit
comando para fechar a janela do CMD. Pode ser que isso possa ajudar.Respostas:
Isso é improvável, mas você parece ter descartado todas as coisas prováveis. Verifique as duas entradas de registro a seguir para ver se elas contêm alguma coisa:
ou
Qualquer coisa lá dentro será chamada toda vez que você executar um arquivo em lotes e, se houver
cmd /k
, causaria esse comportamento.fonte
Você já tentou isso?
Mesmas coisas, mas permite o mesmo que pausar e sair por si só.
Além disso, por que você está colocando o @ na frente de tudo? Por que não usar @echo off antes do restante dos comandos?
fonte