Em scripts em lote no Windows, os desenvolvedores podem controlar o fluxo de seus scripts usando várias técnicas ou métodos para introduzir pausas ou esperas. Os comandos “pause” e “wait” são duas maneiras de controlar o fluxo de seus arquivos em lote. O comando “pause” interrompe a execução de um arquivo batch enquanto apresenta a mensagem “Pressione qualquer tecla para continuar…”. O arquivo em lote não pode ser executado até que o usuário pressione uma tecla. A execução do arquivo em lote é suspensa pelo número de segundos indicado pela instrução de espera.
Comando de pausa de arquivo em lote
O comando “pause” de um arquivo em lote interrompe a execução do arquivo em lote enquanto exibe a mensagem na linha de comando. O arquivo em lote não será executado até que o usuário pressione uma tecla. O comando que interrompe a próxima execução é útil. Executar o arquivo em lote diretamente e ver a saída desejada aparecer na tela é benéfico.
A sintaxe do comando “pause” é:
Pausa
Solicitar entrada do usuário
O comando “pause” no script em lote a seguir mostra a mensagem “Pressione qualquer tecla para continuar…” quando o usuário executa este arquivo em lote. Antes que o arquivo em lote passe para o comando “dir”, o usuário deve pressionar uma tecla.
@eco desligado
rem Este arquivo em lote faz uma pausa para o usuário pressionar uma tecla.
echo Olá, bem-vindo à demonstração do comando PAUSE.
echo A execução do script continua após a pausa.
pausa
rem Este arquivo em lote continua com o próximo comando.
eco Obrigado!
você
Quando o usuário pressiona qualquer tecla usando o teclado, este processo em lote continua:
Comando de espera de arquivo em lote
O código que você forneceu é um arquivo em lote que abre dois programas: Bloco de notas e Paint. O código é o seguinte:
@eco desligadoecho Iniciando o primeiro programa.
INICIAR /B /ESPERAR notepad.exe
echo Bloco de notas aberto em segundo plano com sucesso
echo Iniciando o segundo programa.
INICIE /ESPERE mspaint.exe
echo O Paint foi aberto com sucesso.
cmd /k
A primeira linha, “@echo off”, evita que o arquivo em lote exiba os comandos à medida que são executados.
O usuário é simplesmente informado de que o primeiro programa está sendo iniciado pela segunda linha que é “echo Starting First Program”.
A terceira linha, “START /B /WAIT notepad.exe”, abre o programa Notepad em uma janela de fundo e espera que ele termine antes de continuar. A opção “/B” informa ao comando START para executar o programa em uma janela de fundo, e a opção “/WAIT” informa ao comando START para aguardar a conclusão do programa antes de continuar.
A quarta linha lê o bloco de notas de eco. Quando o Bloco de Notas é aberto com sucesso em segundo plano, ele apenas notifica o usuário com uma mensagem.
A quinta linha, “echo Starting Second Program”, simplesmente exibe uma mensagem ao usuário informando que o segundo programa está sendo iniciado.
A sexta linha, “START /WAIT mspaint.exe”, abre o programa Paint em uma janela de fundo e não espera que ele termine antes de continuar.
A sétima linha, “eco O Paint foi aberto com sucesso”, simplesmente mostra uma mensagem ao usuário informando que o Paint foi aberto com sucesso.
A oitava linha, “cmd /k”, abre uma nova janela do prompt de comando e mantém a janela atual do prompt de comando aberta.
Usando um loop para atrasos personalizados
Podemos usar um loop para atrasos personalizados no processo em lote. Aqui está um exemplo:
Neste exemplo, a primeira mensagem é mostrada ao usuário quando este arquivo em lote é executado. A primeira mensagem é exibida mais uma vez quando o loop “for” começa. O comando timeout interrompe o arquivo em lote por um segundo antes de exibir a segunda mensagem. A mensagem final é então mostrada após um total de 10 iterações.
@eco desligadoecho Demonstração de atraso usando Loop
para /l %%i em (1,1,10) faça (
tempo limite /t 1 /nobreak > nulo
echo Esta mensagem é exibida após %%i segundo(s)
)
echo Esta mensagem exibiu um atraso de 10 segundos.
Usando tempo limite para atraso
O comando timeout de um arquivo em lote pausa a execução do arquivo em lote por um número predeterminado de segundos. A sintaxe é fornecida aqui:
tempo limite /tA opção “/t” especifica a quantidade de tempo em segundos de espera. A chave “/nobreak” desativa o pressionamento de teclas do usuário para interromper o atraso.
O comando “timeout” pode ser usado para:
- Adie a execução de um arquivo em lote por um período de tempo predeterminado
- Impedir que uma ação de arquivo em lote seja interrompida pelo usuário
- Crie uma experiência mais amigável, evitando que o usuário precise pressionar uma tecla para continuar
Por exemplo, o seguinte arquivo em lote é pausado por 10 segundos:
@eco desligadoecho Olá, a execução do script continua após 10 segundos de atraso
tempo limite /t 10
eco Obrigado!
Conforme demonstrado na captura de tela a seguir, um cronômetro está funcionando e aguardando que o usuário interrompa o comando “timeout” pressionando qualquer tecla. Se o usuário pressionar qualquer tecla, o processo será interrompido e passará para o próximo comando no arquivo em lote:
O usuário na captura de tela a seguir interrompe o comando “timeout” após 5 segundos, resultando na exibição da mensagem “Obrigado!” mensagem:
A captura de tela a seguir mostra como o “Obrigado!” a mensagem leva 10 segundos para ser impressa na tela se o usuário final não interromper a instrução de tempo limite:
Aqui está o código atualizado que foi modificado para incluir a opção no-break que impede o usuário final de interromper um processo de arquivo em lote:
@eco desligadorem Este arquivo em lote pausa por 10 segundos
echo Olá, a execução do script continua após 10 segundos de atraso
tempo limite /t 10 /nobreak
rem Após 10 segundos este comando será exibido na tela de prompt
eco Obrigado!
Aqui está a saída do código anterior:
A linha de comando solicita que o usuário digite Y ou N se o usuário usar o comando “CTRL+C”. Se o usuário clicar em Y, este trabalho em lote será interrompido:
Os comandos “pause”, “wait” e “timeout” são as formas de controlar o fluxo de nossos scripts. A execução do script é suspensa quando o comando “pause” é usado e é interrompido por um período de tempo predeterminado quando o comando “timeout” é usado.
Usando declarações condicionais para controle de fluxo
Declarações condicionais são a técnica mais comumente viável empregada para modificar o fluxo de um script com base em uma determinada circunstância. Com base no fato de uma condição ser verdadeira ou falsa, a instrução “if” executa uma das duas partes da execução do código. A instrução “if” está estruturada da seguinte forma:
ifExemplo:
Abra o Bloco de Notas ou qualquer editor de texto de sua preferência e escreva o seguinte código que inicializa o valor da variável inputValue como 1 na terceira linha. O valor da variável inputValue é então verificado usando uma instrução “if” em tempo de execução para ver se é igual a 1, 2 ou 3. Nesse caso, a mensagem apropriada é impressa na tela da linha de comando. Caso contrário, a mensagem final será exibida. Em uma instrução condicional conhecida como “if”, o inputValue de uma variável é verificado para ver se é igual a 1, 2 ou 3. Se for, um dos dois blocos de código é executado. Se a condição for verdadeira, a instrução condicional não faz nada.
@eco desligadorem Este script testa a variável inputValue em relação aos valores 1, 2 e 3.
definir valor de entrada = 1
se '%inputValue%'=='1' (
eco O valor de entrada é igual a 1.
) senão se '%inputValue%'=='2' (
eco O valor de entrada é igual a 2.
) senão se '%inputValue%'=='3' (
eco O valor de entrada é igual a 3.
) outro (
echo A variável inputValue não é igual a 1, 2 ou 3.
)
Saída:
Conclusão
O fluxo de scripts pode ser controlado e os processos podem ser automatizados no sistema operacional Windows usando comandos, loops e instruções condicionais como “if”. Os desenvolvedores podem interromper a execução de um script ou adicionar atrasos com o comando “pause” utilizando “timeout” ou “ping”. Embora não exista uma instrução “switch” integrada no script em lote, podemos simulá-la com expressões “if” e “else if”. O teste é crucial para garantir que esses scripts funcionem conforme pretendido no contexto apropriado. Esses scripts são úteis para automação, gerenciamento de sistema e manipulação de arquivos.