Script em lote - depuração

Muitas vezes, você pode ter problemas ao executar arquivos em lote e, na maioria das vezes, você precisa depurar seus arquivos em lote de uma forma ou de outra para determinar o problema com o próprio arquivo em lote. A seguir estão algumas das técnicas que podem ajudar na depuração de arquivos Batch Script.

Mensagens de erro

Para descobrir a origem da mensagem, siga estas etapas -

Step 1 - REM para fora da linha @ECHO OFF, ou seja, REM @ECHO OFF ou :: @ECHO OFF.

Step 2 - Execute o arquivo em lote com os parâmetros de linha de comando necessários, redirecionando todas as saídas para um arquivo de log para comparação posterior.

test.bat > batch.log 2>&1

Step 3 - Procure no arquivo batch.log as mensagens de erro

Step 4- Verifique a linha anterior para qualquer comando inesperado ou inválido, troca (es) de linha de comando ou valor (es); preste atenção especial aos valores de quaisquer variáveis ​​de ambiente usadas no comando.

Step 5 - Corrija o erro e repita este processo até que todas as mensagens de erro tenham desaparecido.

Linhas de Comando Complexas

Outra fonte comum de erros são comandos redirecionados incorretamente, como, por exemplo, comandos FIND ou FINDSTR "aninhados" com strings de pesquisa incorretas, às vezes dentro de um loop FOR / F.

Para verificar a validade desses comandos complexos, siga estas etapas -

Step 1 - Insira "linhas de verificação de comando" antes de uma linha que usa o conjunto de comandos complexo.

A seguir está um exemplo em que o comando ECHO é inserido para marcar onde a saída do primeiro comando TYPE termina e o próximo começa.

TYPE %Temp%.\apipaorg.reg
ECHO.================================================ TYPE %Temp%.\apipaorg.reg 
| FIND 
"[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\TCPIP\Parameters\Interfaces\"

Step 2 - Siga o procedimento para encontrar as fontes de mensagens de erro descritas acima.

Step 3- Preste atenção especial à saída das linhas de comando "simplificadas": a saída está no formato esperado? O valor ou posição do "token" está conforme o esperado?

Sub-rotinas

As sub-rotinas que geram mensagens de erro representam um "desafio" extra para encontrar a causa do erro, pois podem ser chamadas várias vezes no mesmo arquivo em lote.

Para ajudar a descobrir o que causa a chamada incorreta para a sub-rotina, siga estas etapas -

Step 1 - Adicionar e redefinir uma variável de contador no início do script -

SET Counter = 0

Step 2 - Incrementar o contador cada vez que a sub-rotina é chamada, inserindo a seguinte linha no início da sub-rotina

SET /A Counter+=1

Step 3- Inserir outra linha logo após o incremento do contador, contendo apenas o comando SET; isso listará todas as variáveis ​​de ambiente e seus valores.

Step 4 - Siga o procedimento para encontrar as fontes de mensagens de erro descritas acima.

Versões do Windows

Se você pretende distribuir seus arquivos em lote para outros computadores que podem ou não executar a mesma versão do Windows, você precisará testar seus arquivos em lote no maior número possível de versões do Windows.

O exemplo a seguir mostra como verificar várias versões do sistema operacional para verificar as versões relevantes do Windows.

@ECHO OFF
:: Check for Windows NT 4 and later

IF NOT "%OS%"=="Windows_NT" GOTO DontRun
:: Check for Windows NT 4
VER | FIND "Windows NT" >NUL && GOTO DontRun
:: Check for Windows 2000
VER | FIND "Windows 2000" >NUL && GOTO DontRun
:: Place actual code here . . .
:: End of actual code . . .
EXIT

:DontRun
ECHO Sorry, this batch file was written for Windows XP and later versions only