Como executar comandos em intervalos reduzidos

Em Windows

No windows, para executar comandos em intervalos reduzidos podemos usar a seguinte rotina num ficheiro de extensão .bat:

Este código implementa um ciclo infinito onde é executado um comando (terceira linha) para logo de seguida aguardar um segundo, com o comando sleep.

Mais detalhadamente, a primeira linha suprime a prompt da linha de comandos, o comando a executar está na terceira linha, na quarta linha o sleep atrasa a execução um segundo, e na última linha tem uma indicação para voltar à etiqueta loop definida na segunda linha.

Esta solução deverá funcionar com o Windows XP quando o comando sleep está disponível.

Quando o comando sleep não está disponível surge a seguinte mensagem de erro:

‘sleep’ is not recognized as an internal or external command, operable program or batch file.

Como alternativa pode-se substituir o sleep pelo seguinte comando:

O parâmetro “-w” do comando ping indica o tempo em milissegundos.

Em outras versões do Windows também existe o comando timeout.

 

Em Unix

Em unix podemos executar a mesma operação com o comando watch.

O parâmetro “-n”  define os segundos que se pretende aguardar até à próxima execução, entre aspas seguem-se os comandos que pretendemos executar.

 

Referências

Echo, Windows XP Professional Product Documentation

Timeout, Management and Tools for Windows Server 2012

How to sleep for 5 seconds in Windows’s Command Prompt? (or DOS), StackOverflow

watch, Linux man page

Timeout, Management and Tools for Windows Server 2012

Como executar listas de comandos

Este é o primeiro post do blog Fecha Chavetas, este é um espaço sobre informática que espero vir a ser útil a pessoas de outras áreas. É aqui que reúno algumas sugestões, truques e dicas, sobre aplicações, sistemas operativos, linhas de comandos e programação.

Como uma boa parte do material que quero partilhar é sobre operações em linhas de comandos, vou começar por um dos fundamentos que estará muitas vezes presente nos artigos que abordam este tema.

Imaginem que queremos criar uma pasta, copiar ficheiros para lá e comprimir todo o conteúdo da pasta. Podemos separar as operações da seguinte forma: 1. criar uma pasta; 2. copiar os ficheiros para a pasta; 3. comprimir a pasta com todo seu conteúdo.

Agora, para complicar, digamos que um dos ficheiros tem 500 MB e é descarregado da Internet. A segunda operação vai certamente demorar e não nos podemos esquecer que só podemos comprimir o conteúdo da pasta quando a segunda operação terminar. Se esta for uma tarefa diária temos de começar a pensar em formas de automatizar este processo.

A solução é executar esta operação numa lista de comandos. Praticamente todos os sistemas operativos permitem fazer isto.

Existem três operadores que temos de ter em conta:

O ponto e vírgula (;) – O comando1 e o comando2 são executados invariavelmente um a seguir ao outro. Na linha de comandos do Windows, o operador para separar comandos é o sinal ‘&’ em vez do ‘;’.

&& – Operador AND, o comando2 só é executado se o primeiro comando terminar sem erros.

|| – Operador OR, o comando2 só é executado quando o primeiro comando falha.

Os parêntesis “( )” podem ser usados para agrupar comandos.

Voltando ao nosso exemplo, ficaria algo semelhante ao que se segue:

Em alternativa, agora mostrando uma mensagem no caso de alguma das operações falhar:

Referências

Lists of Commands, Bash Reference Manual

Exit status, Wikipédia

Command shell overview, Using multiple commands and conditional processing symbols