Interromper a execução por um determinado período de tempo

É frequente na construção de scripts termos a necessidade de induzir demora na execução de comandos por forma a termos a certeza que os mesmos foram concluídos com sucesso ou simplesmente dar a oportunidade ao utilizador de analisar/observar a execução do comando.

O objetivo deste artigo é mostrar os diferentes métodos de que o Windows dispõe para interromper, por um determinado período de tempo, a execução de um comando.

Lista de comandos passíveis de serem usadas para induzir paragem:

  • PAUSE
  • CHOICE
  • WAITFOR
  • TIMEOUT
  • PING
  • START /WAIT
  • Start-Sleep
  • WScript.Sleep

 

 

PAUSE

O comando PAUSE suspende o processamento de um programa batch e apresenta a mensagem “Prima qualquer tecla para continuar…”. Enquanto o operador não pressionar qualquer tecla a execução da batch não prossegue.

Exemplo #1:

PAUSE

image

 

 

CHOICE

O comando CHOICE permite que seja apresentada ao utilizador um conjunto de opções. Pode usar-se esta necessidade de interatividade com o operador para induzir uma paragem no processamento.

Exemplo #1

(Aguarda por tempo indeterminado que o utilizador escolha uma opção)

CHOICE /C SNC /M "Prima S para Sim, N para Não ou C para Cancelar."

Exemplo #2

(Aguarda que o utilizador escolha no espaço de 10 segundos uma opção. Se não escolher qualquer opção será assumido automaticamente o “S”)

CHOICE /T 10 /C SNC /CS /D S

image

 

 

WAITFOR

Este comando envia ou aguarda por um sinal do sistema. Podemos usar este comando de diferentes formas:

Exemplo #1

(Aguarda 10 segundos pela receção do sinal “Teste”)~

WAITFOR Teste /T 10

Exemplo #2

(Aguarda por tempo indeterminado a receção do sinal “Teste”)

Na máquina A executar:

WAITFOR Teste

Na máquina B executar

WAITFOR /SI Teste

image

 

 

TIMEOUT

O comando TIMEOUT induz uma paragem na execução de comandos por um determinado período de tempo, período esse que pode ser infinito.

Exemplo #1

(Aguarda 10 segundos e apresenta um contador regressivo)

TIMEOUT /T 10

Exemplo #2

(Aguarda por tempo indeterminado até que o utilizado pressione qualquer tecla)

TIMEOUT /T –1

Exemplo #3

(Aguarda 10 segundos e ignora qualquer tecla pressionada pelo utilizador)

TIMEOUT /T 10 /NOBREAK

image

 

PING

Este comando apesar de não ser um comando de interrupção pode usar-se para provocar atraso, isto é, parte-se do principio que o tempo de reposta do comando é de 1 segundo e pode desta forma manipular-se o atraso pretendido.

Exemplo #1

(Aguarda 10 segundos)

ping -n 10 127.0.0.1

#Exemplo #2

(Idêntico ao anterior mas com supressão do resultado de saída)

ping -n 10 127.0.0.1 > NUL

image

 

START /WAIT

Este método não é propriamente uma função de interrupção mas sim uma funcionalidade do comando START que permite que os comandos sejam interrompidos até que a nova janela termine a execução

Exemplo #1

(Aguarda que o comando ping seja terminado)

START /WAIT ping 127.0.0.1

image

 

Start-Sleep

Este comando é nativo do PowerShell por isso a sua execução requer este ambiente. A sintaxe é simples e permite especificar o tempo de interrupção pretendido.

Exemplo #1

(Aguarda 10 segundos)

Start-Sleep 10

image

 

 

WScript.Sleep

Este comando é nativo do Windows Script Host por isso a sua execução envolve a execução do motor de interpretação desta linguagem de scripting. No exemplo abaixo vou mostrar como é que se pode usar provocar atraso usando apenas uma linha de comando

Exemplo #1 (Cria um ficheiro vbs e executa a instrução de interrupção de 10 segundos)

ECHO WScript.sleep 10000 > temp.vbs && cscript temp.vbs

image

 

Conhecem mais métodos ou usam outras técnicas para induzir demora ou interrupção nos scripts? Partilhem o vosso conhecimento preenchendo a caixa de comentários.

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s