Comandos de pausa e espera de arquivo em lote: como controlar o fluxo de seus scripts

Comandos De Pausa E Espera De Arquivo Em Lote Como Controlar O Fluxo De Seus Scripts



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 desligado

echo 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 desligado

echo 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 /t [/nobreak]

A 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 desligado

echo 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 desligado

rem 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:

if senão

Exemplo:

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 desligado

rem 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.