Tengo una máquina virtual Server 2012 R2 Standard de 64 bits que está actuando de manera extraña. Los archivos bat funcionan bien y la ventana CMD se cierra normalmente; pero si la carpeta que contiene el archivo bat se cierra durante la ejecución del archivo bat, finalizará pero la ventana CMD no se cierra. He simplificado esto hasta el punto de tener el archivo bat más simple posible. Contiene 1 línea. pausa
- Abra la carpeta que contiene el archivo bat con el Explorador de Windows
- Inicie el archivo bat haciendo doble clic en él
- Cerrar la ventana del Explorador de Windows
- Presione cualquier tecla en la ventana CMD
- El cursor se mueve a la siguiente línea cuando finaliza el archivo bat
- La ventana CMD permanece
Esto solo ocurre en una máquina. ¿Alguien sabe por qué podría ser esto? Es una máquina virtual de prueba y quizás debería reconstruirse, pero me da curiosidad. Gracias
Reemplacé mi archivo bat simple con uno que contiene lo siguiente:
@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
Los resultados se muestran a continuación:
.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 . . .
Línea de comando
13/04/2016 Descubrí un poco más mirando el Administrador de tareas mientras hacía esto. Cuando inicio el archivo bat, aparecen 2 líneas en el Administrador de tareas: ventana Detalles ... 1 para cmd.exe y 1 para conhost.exe. Cuando el bate termina cmd.exe desaparece, pero conhost.exe permanece. Otra cosa que noté es que realmente no tiene que salir de la carpeta del Explorador de Windows como dije anteriormente ... todo lo que tiene que hacer es hacer clic en cualquier lugar de la ventana del Explorador. Si no hago clic en ninguna parte de la ventana del Explorador, la ventana de CMD para el archivo bat se cierra normalmente y ambas tareas desaparecen de la ventana de detalles como era de esperar.
fuente
exit
comando para cerrar la ventana de CMD. Puede ser que esto pueda ayudar.Respuestas:
Esto es poco probable, pero parece haber descartado todas las cosas probables. Verifique las siguientes dos entradas de registro para ver si contienen algo:
o
Cualquier cosa allí se llamará cada vez que ejecute un archivo por lotes y, si lo tiene
cmd /k
, provocaría este comportamiento.fuente
¿Has probado esto?
Lo mismo, pero permite lo mismo que pausa y sale solo.
Además, ¿por qué pones la @ delante de todo? ¿Por qué no usar @echo off antes que el resto de los comandos?
fuente