Como eu posso depurar um script .BAT?
-
03-07-2019 - |
Pergunta
Existe uma maneira de passo através de um script .bat? A coisa é, eu tenho um script de construção, o que exige uma grande quantidade de outros scripts, e eu gostaria de ver o que é a ordem em que eles são chamados, para que eu possa saber onde exatamente eu tenho que ir sobre e adicionar minhas modificações .
Solução
Eu não sei de qualquer maneira para o passo através da execução de um arquivo .bat, mas você pode usar echo
e pause
para ajudar com a depuração.
ECHO
Ecoará uma mensagem no arquivo de lote. Tais como ECHO Olá Mundo irá imprimir Olá Mundo na tela quando executado. No entanto, sem @ECHO OFF no início do arquivo em lotes que você também obter "ECHO Olá Mundo" e "Olá Mundo". Finalmente, se você só gostaria de criar uma linha em branco, escreva ECHO. adicionando o período no fim cria uma linha vazia.PAUSA
Solicitar que o usuário pressione qualquer tecla para continuar.
Fonte: Batch File Ajuda
@ workmad3:. Resposta tem mais boas dicas para trabalhar com o comando echo
Outro recurso útil ... DDB: DOS Dicas Batch arquivo
Outras dicas
Certifique-se de que não há são 'echo off' declarações nos scripts e chamadas 'eco em' depois de chamar cada script para redefinir qualquer você perdeu.
A razão é que, se o eco é mantido, então a vontade interpretador de comandos de saída de cada comando (após o processamento do parâmetro) antes de executá-lo. Faz com que pareça muito ruim para uso em produção, mas muito útil para fins de depuração como você pode ver onde a produção tem errado ido.
Além disso, certifique-se de que você está verificando os ERRORLEVELs estabelecidos pelos chamados scripts e programas em lote. Lembre-se que existem 2 métodos diferentes usados ??em arquivos .bat para isso. Se você chamou um programa, o nível de erro é em% ERRORLEVEL%, enquanto de lote arquivos o nível de erro é retornado na variável ErrorLevel e não precisa% é em torno dele.
Diante de preocupação semelhante, achei o seguinte ferramenta com uma busca trivial Google:
O JPSoft " Assuma o comando " inclui um IDE arquivo de lote / depurador. Sua vídeo de apresentação curta demonstra-lo muito bem.
Eu estou usando a versão experimental desde algumas horas. Aqui é a minha primeira humilde opinião:
- De um lado, ele realmente permite depuração .bat e .cmd roteiros e eu agora estou convencido de que ele pode ajudar em algum casos
- Por outro lado, às vezes blocos e eu tive que matá-lo ... especialmente quando a depuração subscritos (nem sempre sistematicamente) .. ele não mostra uma "pilha de chamadas", nem um "passo para fora" botão.
É deverves uma tentativa.
Eu encontrei 'correndo passos' (win32) software fazendo exatamente o que eu estava procurando: http://www.steppingsoftware.com/
Você pode carregar um arquivo bat, breakpoints lugar / start percorrendo-o ao ver as variáveis ??de saída e meio ambiente.
A versão de avaliação só permite a passo através de 50 linhas ... Alguém tem uma alternativa livre com funcionalidade semelhante?
rem o @ECHO OFF e chame o arquivo de lote redirectin saída ALL para um arquivo de log ..
c:> yourbatch.bat (parâmetros opcionais)> yourlogfile.txt 2> & 1
http://www.robvanderwoude.com/battech_debugging.php
FUNCIONA !! não se esqueça do 2> & 1 ...
WIZ
A única maneira que eu posso pensar é spinkle o código com echo
s e pause
s.
Você tentou redirecionar o resultado para um arquivo? Como whatever.bat> log.txt
Você tem que ter certeza de que, neste caso, todos os outros chamados script também está registrando para o arquivo como >> log.txt
Além disso, se você colocar uma data / T e tempo / T no início e no final desse arquivo de lote, você obterá as vezes era naquele momento e você pode mapear o seu script tempo de funcionamento ea ordem.
Ou .... Ligue para o seu arquivo .bat principal de outro arquivo .bat e saída o resultado para um ou seja arquivo de resultado.
runner.bat> mainresults.txt
Onde runner.bat chama o arquivo .bat principal
Você deverá ver todas as ações realizadas no arquivo .bat principal agora
ou, abra uma janela cmd, em seguida, chamar o lote a partir daí, a saída será na tela.