Existe uma maneira de percorrer um script .bat? A questão é que eu tenho um script de construção, que chama muitos outros scripts, e gostaria de ver em que ordem eles são chamados, para que eu possa saber exatamente onde devo fazer e adicionar minhas modificações .
windows
batch-file
debugging
cmd
Vhaerun
fonte
fonte
Respostas:
Não sei de nenhuma maneira para percorrer a execução de um arquivo .bat, mas você pode usar
echo
epause
ajudar na depuração.Fonte: Ajuda do arquivo em lote
@ workmad3: answer tem mais dicas boas para trabalhar com o
echo
comando.Outro recurso útil ... DDB: Dicas de arquivo em lote do DOS
fonte
Certifique-se de que não haja instruções 'echo off' nos scripts e chame 'echo on' após chamar cada script para redefinir qualquer um que tenha perdido.
O motivo é que, se o eco for deixado ativado, o interpretador de comandos emitirá 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 propósitos de depuração, pois você pode ver onde a saída deu errado.
Além disso, certifique-se de verificar os ErrorLevels definidos pelos scripts e programas em lote chamados. Lembre-se de que existem 2 métodos diferentes usados em arquivos .bat para isso. Se você chamou um programa, o nível de erro está em% ERRORLEVEL%, enquanto nos arquivos de lote o nível de erro é retornado na variável ErrorLevel e não precisa de% ao redor dele.
fonte
Enfrentando uma preocupação semelhante, encontrei a seguinte ferramenta com uma pesquisa trivial do Google:
O " Take Command " da JPSoft inclui um arquivo em lote IDE / depurador. Seu breve vídeo de apresentação demonstra isso muito bem.
Estou usando a versão de teste há algumas horas. Aqui está minha primeira opinião humilde:
Deve ser uma tentativa.
fonte
Always quote the most relevant part of an important link
. Sem o link, essa resposta se dissolve, o que, novamente, provavelmente é bom, mas normalmente esse tipo de sugestão ad-hoc de um software proprietário não testado geralmente se encaixaria melhor em um comentário. Sinta-se à vontade para sair também.Eu encontrei o software 'running steps' (win32) fazendo exatamente o que eu estava procurando: http://www.steppingsoftware.com/
Você pode carregar um arquivo bat, colocar pontos de interrupção / começar a percorrê-lo enquanto vê a saída e as variáveis de ambiente.
A versão de avaliação só permite avançar 50 linhas ... Alguém tem uma alternativa gratuita com funcionalidade semelhante?
fonte
remova o @ECHO OFF e chame seu arquivo em lote redirecionando TODAS as saídas para um arquivo de log.
c:> yourbatch.bat (parâmetros opcionais)> yourlogfile.txt 2> & 1
encontrado em http://www.robvanderwoude.com/battech_debugging.php
FUNCIONA!! não se esqueça do 2> & 1 ...
WIZ
fonte
A única maneira que eu posso pensar é spinkle o código com
echo
s epause
s.fonte
Você tentou redirecionar o resultado para um arquivo? Como qualquer coisa.bat> log.txt
Você deve ter certeza de que, neste caso, todos os outros scripts chamados também estão registrando no arquivo como >> log.txt
Além disso, se você colocar uma data / T e hora / T no início e no final desse arquivo em lote, você obterá os horários em que estava naquele ponto e poderá mapear o tempo de execução e a ordem do script.
fonte
Ou .... Chame seu arquivo .bat principal de outro arquivo .bat e produza o resultado em um arquivo de resultado, por exemplo
runner.bat> mainresults.txt
Onde runner.bat chama o arquivo .bat principal
Você deve ver todas as ações realizadas no arquivo .bat principal agora
fonte
Um problema bastante frequente é que um script em lote é executado clicando duas vezes em seu ícone. Como a
cmd.exe
instância do Prompt de comando ( ) da hospedagem também termina, não é possível ler a saída potencial e as mensagens de erro.Para ler essas mensagens, é muito importante que você abra explicitamente uma janela do Prompt de Comando, vá até o diretório de trabalho aplicável e execute o script em lote digitando seu caminho / nome.
fonte
você pode usar
cmd \k
no final do seu script para ver o erro. ele não fecha o seu prompt de comando após a execução ser concluídafonte
ou, abra uma janela cmd e chame o lote de lá, a saída estará na tela.
fonte