Arquivo em lote do Windows - Como canalizar a saída para o arquivo de texto e depois abrir o arquivo de texto?

Arquivo em lote do Windows - Como canalizar a saída para o arquivo de texto e depois abrir o arquivo de texto?

Eu tenho um problema estranho onde tenho um arquivo em lote simples que executa outro arquivo em lote, envia o que está na tela para um arquivo de log e tenta abrir o arquivo de log. O problema é que o arquivo de log não abre. Aqui está o 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

Por tentativa e erro, descobri que comentar a chamada para o arquivo em lote externo abre o arquivo de log, conforme esperado.

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

Só para verificar, também troquei o outro arquivo em lote por um que simplesmente funciona echo Hello World, mas o problema permanece - o arquivo de log não abre. Achei que havia algo acontecendo no outro arquivo em lote que estava causando a falha, mas não parece ser o caso - este exemplo ainda não está funcionando.

echo %date%, %time%: Deploying web site to Test1. > deploy.bat.log
Hello.bat
start "" notepad.exe deploy.bat.log

Minha pergunta é: por que o arquivo de log não abre e como faço para corrigir isso?

Responder1

cmdencadeia para um arquivo em lote, ou seja, o arquivo em lote chamado substitui o arquivo em lote de chamada e não retorna, portanto, quaisquer chamadas após a chamada em lote nunca serão vistas. Se você quiser retornar de um arquivo em lote você deve usar ochamarcomando, como em:

echo %date%, %time%: Deploying web site to Test1. > deploy.bat.log
call Hello.bat
start "" notepad.exe deploy.bat.log

Não é o que você poderia esperar, mas infelizmente uma decisão ruim de design no DOS ainda está conosco. Não tenho certeza de quantos arquivos em lote DOS1 são usados ​​nas versões modernas do Windows, mas posso arriscar um palpite.

informação relacionada