Mientras buscaba el método correcto para ejecutar un script .bat y hacer que la cmd
ventana permaneciera activa al finalizar, aprendí que uno de los dos métodos populares es incluir cmd /k file.bat
en el script, donde "file.bat" se refiere a sí mismo.
Si bien entiendo el resultado funcional de lo anterior, lo que parece que no puedo entender es cómo, conceptualmente, se ejecuta y resuelve correctamente.
Por mi propia inferencia no educada, creo que tiene algo que ver con el /k
argumento, cuya función se explica como:
Lleva a cabo el comando especificado por la cadena pero permanece
Aún así, incluso si permite que el script evite el bucle, ¿cómo no interrumpe su propia ejecución?
Disculpas si esto es muy obvio o si no entiendo algo fundamental, no tengo educación ni capacitación formal sobre el tema.
EDITAR:
Bueno, ¡eso fue una tontería de mi parte! vi en la respuestaaquíque la sintaxis estaba organizada de la manera que indiqué anteriormente... lo cualhacerepetir el guión, por lo que debería haberlo probado por mí mismo primero antes de creer ciegamente sin el contexto adecuado (y siempre digo "confía pero verifica", también, qué hipócrita).
Respuesta1
En cuanto a por qué cmd
se resuelve, hay un par de buenas explicaciones más adelante.Desbordamiento de pila- esencialmente cmd
se interpreta como %ComSpec%
, que es la variable de entorno de su sistema para la ubicación completa de cmd.exe (generalmente C:\Windows\System32\cmd.exe
).
En cuanto al contexto de su pregunta, si tiene cmd /k yourbatfile.bat
dentro yourbatfile.bat, simplemente se repetirá. Si desea que su ventana permanezca abierta por razones de solución de problemas, le recomiendo simplemente colocar un pause
al final o después de cualquier sección con la que tenga problemas.
La redacción para /k
esun poco diferente aquíya que dice que "vuelve al símbolo del sistema"; esencialmente, agregar /k
es como abrir cmd.exe y usarlo, mientras que no /k
es como ejecutar un comando desde una ventana Ejecutar.
Puede probar esto abriendo Ejecutar y ejecutando ipconfig /all
; su ventana se cerrará inmediatamente después de ipconfig
finalizar; pero si abre Ejecutar y ejecuta cmd /k ipconfig /all
, su ventana lo regresará al símbolo del sistema.