Script de lote - código de retorno
Por padrão, quando uma execução de linha de comando é concluída, ela deve retornar zero quando a execução é bem-sucedida ou diferente de zero quando a execução falha. Quando um script em lote retorna um valor diferente de zero depois que a execução falha, o valor diferente de zero indica qual é o número do erro. Em seguida, usaremos o número do erro para determinar o que é o erro e resolvê-lo de acordo.
A seguir estão o código de saída comum e sua descrição.
Erro de código | Descrição |
---|---|
0 | Programa concluído com sucesso. |
1 | Função incorreta. Indica que o Action tentou executar um comando não reconhecido no prompt de comando cmd.exe do Windows. |
2 | O sistema não pode encontrar o arquivo especificado. Indica que o arquivo não pode ser encontrado no local especificado. |
3 | O sistema não consegue encontrar o caminho especificado. Indica que o caminho especificado não pode ser encontrado. |
5 | Acesso negado. Indica que o usuário não tem direito de acesso ao recurso especificado. |
9009 0x2331 |
O programa não é reconhecido como um comando interno ou externo, programa operável ou arquivo em lote. Indica que o comando, nome do aplicativo ou caminho foi digitado incorretamente ao configurar a ação. |
221225495 0xC0000017 -1073741801 |
Não há memória virtual suficiente disponível. Isso indica que o Windows ficou sem memória. |
3221225786 0xC000013A -1073741510 |
O aplicativo foi encerrado como resultado de um CTRL + C. Indica que o aplicativo foi encerrado pela entrada do teclado do usuário CTRL + C ou CTRL + Break ou fechando a janela do prompt de comando. |
3221225794 0xC0000142 -1073741502 |
A aplicação falhou em iniciar corretamente. Indica que o aplicativo foi iniciado em uma área de trabalho para a qual o usuário atual não tem direitos de acesso. Outra causa possível é que o gdi32.dll ou o user32.dll não foi inicializado. |
Nível de Erro
A variável de ambiente% ERRORLEVEL% contém o código de retorno do último programa ou script executado.
Por padrão, a maneira de verificar o ERRORLEVEL é por meio do código a seguir.
Sintaxe
IF %ERRORLEVEL% NEQ 0 (
DO_Something
)
É comum usar o comando EXIT / B% ERRORLEVEL% no final do arquivo em lote para retornar os códigos de erro do arquivo em lote.
EXIT / B no final do arquivo em lote interromperá a execução de um arquivo em lote.
Use EXIT / B <códigos de saída> no final do arquivo em lote para retornar códigos de retorno personalizados.
A variável de ambiente% ERRORLEVEL% contém o nível de erro mais recente no arquivo em lote, que são os códigos de erro mais recentes do último comando executado. No arquivo em lote, é sempre uma boa prática usar variáveis de ambiente em vez de valores constantes, uma vez que a mesma variável é expandida para valores diferentes em computadores diferentes.
Vejamos um exemplo rápido de como verificar códigos de erro em um arquivo em lote.
Exemplo
Vamos supor que temos um arquivo em lote chamado Find.cmd que possui o código a seguir. No código, mencionamos claramente que, se não encontrarmos o arquivo chamado lists.txt, devemos definir o nível de erro para 7. Da mesma forma, se virmos que a variável userprofile não está definida, devemos definir o código de nível de erro para 9
if not exist c:\lists.txt exit 7
if not defined userprofile exit 9
exit 0
Vamos supor que temos outro arquivo chamado App.cmd que chama Find.cmd primeiro. Agora, se Find.cmd retornar um erro em que define o nível de erro como maior que 0, ele sairá do programa. No arquivo em lote a seguir, depois de chamar Find.cnd find, ele realmente verifica se o nível de erro é maior que 0.
Call Find.cmd
if errorlevel gtr 0 exit
echo “Successful completion”
Resultado
No programa acima, podemos ter os seguintes cenários como saída -
Se o arquivo c: \ lists.txt não existir, nada será exibido na saída do console.
Se a variável userprofile não existir, nada será exibido na saída do console.
Se ambas as condições acima forem aprovadas, a string “Conclusão bem-sucedida” será exibida no prompt de comando.
rotações
No capítulo de tomada de decisão, vimos instruções que foram executadas uma após a outra de maneira sequencial. Além disso, as implementações também podem ser feitas em Batch Script para alterar o fluxo de controle na lógica de um programa. Eles são então classificados em declarações de fluxo de controle.
S.Não | Loops e descrição |
---|---|
1 | Implementação de declaração While Não há instrução while direta disponível no Batch Script, mas podemos fazer uma implementação desse loop muito facilmente usando a instrução if e rótulos. |
2 | Para declaração - listar implementações A construção "FOR" oferece recursos de loop para arquivos em lote. A seguir está a construção comum da instrução 'for' para trabalhar com uma lista de valores. |
3 | Looping por Ranges A instrução 'para' também tem a capacidade de se mover por uma gama de valores. A seguir está a forma geral da declaração. |
4 | Clássico para Implementação de Loop A seguir está a declaração clássica 'para' que está disponível na maioria das linguagens de programação. |
Loop por meio de argumentos de linha de comando
A instrução 'for' também pode ser usada para verificar os argumentos da linha de comando. O exemplo a seguir mostra como a instrução 'for' pode ser usada para percorrer os argumentos da linha de comando.
Exemplo
@ECHO OFF
:Loop
IF "%1"=="" GOTO completed
FOR %%F IN (%1) DO echo %%F
SHIFT
GOTO Loop
:completed
Resultado
Vamos supor que nosso código acima esteja armazenado em um arquivo chamado Test.bat. O comando acima produzirá a seguinte saída se o arquivo em lote passar os argumentos de linha de comando de 1,2 e 3 como Test.bat 1 2 3.
1
2
3
S.Não | Loops e descrição |
---|---|
1 | Implementação da declaração de quebra A instrução break é usada para alterar o fluxo de controle dentro dos loops em qualquer linguagem de programação. A instrução break é normalmente usada em construções de loop e é usada para causar o encerramento imediato do loop mais interno. |