
Tengo un problema extraño en el que tengo un archivo por lotes simple que ejecuta otro archivo por lotes, genera lo que está en la pantalla en un archivo de registro y luego intenta abrir el archivo de registro. El problema es que el archivo de registro no se abre. Aquí está el código.
echo %date%, %time%: Deploying web site to Test1. > deploy.bat.log
Archive.deploy.cmd /Y /M:Test1 /U:<User> /P:<Password> >> deploy.bat.log
start "" notepad.exe deploy.bat.log
A través de prueba y error, descubrí que comentar la llamada al archivo por lotes externo hace que el archivo de registro se abra, como se esperaba.
echo %date%, %time%: Deploying web site to Test1. > deploy.bat.log
REM Archive.deploy.cmd /Y /M:Test1 /U:<User> /P:<Password> >> deploy.bat.log
start "" notepad.exe deploy.bat.log
Solo para comprobarlo, también cambié el otro archivo por lotes por uno que simplemente funciona echo Hello World
, pero el problema persiste: el archivo de registro no se abre. Pensé que algo estaba sucediendo en el otro archivo por lotes que estaba provocando que fallara, pero no parece ser el caso: este ejemplo todavía no funciona.
echo %date%, %time%: Deploying web site to Test1. > deploy.bat.log
Hello.bat
start "" notepad.exe deploy.bat.log
Mi pregunta es, ¿por qué no se abre el archivo de registro y cómo lo soluciono?
Respuesta1
cmdse encadena a un archivo por lotes, es decir, el archivo por lotes llamado reemplaza el archivo por lotes que realiza la llamada y no regresa, por lo que nunca se verán las llamadas posteriores a la llamada por lotes. Si desea regresar desde un archivo por lotes, debe utilizar elllamarcomando, como en:
echo %date%, %time%: Deploying web site to Test1. > deploy.bat.log
call Hello.bat
start "" notepad.exe deploy.bat.log
No es lo que cabría esperar, pero me temo que todavía tenemos una mala decisión de diseño en DOS. No estoy seguro de cuántos archivos por lotes DOS1 se utilizan en las versiones modernas de Windows, pero puedo arriesgarme a adivinar.