Pregunta Archivo por lotes de Windows: ¿cómo canalizar la salida al archivo de texto y luego abrir el archivo de texto?


Tengo un problema extraño en el que tengo un archivo por lotes simple que ejecuta otro archivo por lotes, muestra lo que hay en la pantalla en un archivo de registro y luego intento 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 al comentar la llamada al archivo por lotes externo, el archivo de registro se abre, 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 verificar, también cambié el otro archivo por lotes por uno que simplemente echo Hello World, pero el problema persiste: el archivo de registro no se abre. Pensé que estaba pasando algo en el otro archivo de proceso por lotes que causaba su error, 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 arreglo para que funcione?


0


origen




Respuestas:


cmd cadenas a un archivo por lotes, es decir, el archivo de proceso por lotes llamado reemplaza el archivo de proceso por lotes y no regresa, por lo que nunca se verán las llamadas después de la llamada por lotes. Si desea regresar de un archivo por lotes, debe usar llamada comando, 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 decisión de diseño temprana en el DOS. No estoy seguro de cuántos archivos de lote de DOS1 se usan en las versiones modernas de Windows, pero puedo arriesgarme.


1