DOS e arquivos BAT – Parte 1
Vamos falar sobre uma coisa que existe desde os primórdios dos SOs: Arquivos em lotes!
Vou falar, mais especificamente, sobre arquivos em lotes feitos no prompt do DOS.
Aqui no trabalho tenho como computador de testes um pc com windows xp professional. Meu prompt do DOS diz que é versão 5.1.2600, seilá se isso é bom ou não.
Acontece que, eventualmente, preciso automatizar alguma coisa no windows e esse SO não me dá recursos para fazer isso. No meu mac existe o Automator, que me ajuda a executar ações variadas em praticamente qualquer aspecto que eu necessite. Mas o windows não ajuda, então sou forçado a usar o DOS.
Mas esse post é um negócio prático; vamos começar fazendo testes no prompt!
Segure a tecla windows + r. Na janela que abrirá, digitemos assim:
cmd
Vai abrir a simpática janela preta do DOS. Ele te leva direto para o diretório de usuário. Eu acho isso aborrecido, então vamos limpar a tela:
cd\
cls
Pronto. Podemos começar.
Sabia que é possível escrever resultados dos comandos do DOS em arquivos com apenas um operador e um parâmetro? Vamos ver isso na prática.
Abra o seu explorer em c:, ou o drive que vc achar melhor. Eu usarei c: aqui.
Aliás, podemos fazer isso pelo prompt:
explorer c:
Maravilha. Continuemos:
echo teste
Você deve ter percebido que o comando echo escreve tudo o que vier depois na janela do prompt, certo? Então façamos isso:
echo amendoin > c:\teste.txt
Agora dê uma olhada na janela do explorer. “Que diabos é aquilo!?“, você me pergunta.. e eu respondo: “É o arquivo teste que você criou!” Se abri-lo verá escrito “amendoin” no corpo do texto. Tentemos escrever mais. Feche o arquivo e volte para a telinha do prompt:
echo repolho > c:\teste.txt
Se você abrir o arquivo agora, verá que “amendoin” foi sobrescrito por “repolho”.
E se quisermos amendoins e repolhos no mesmo arquivo? Então vamos fazer assim:
echo amendoin > c:\teste.txt
echo repolho >> c:\teste.txt
O operador “>>”, como você percebe, implementa o que já existe. Isso é, ele não vai substituir uma coisa por outra, mas vai só acrescentar!
Façamos alguns testes novos:
cls
dir > c:\teste.txt
Olhe o arquivo. Ali está o resultado do comando “dir”. Podemos fazer isso:
cls
echo Conteudo do meu c:!!!! > c:\teste.txt
echo. >> c:\teste.txt
dir >> c:\teste.txt
Percebe que “echo” seguido de ponto imprime uma linha em branco? Legal né?
Agora que tal nos aprofundarmos mais “programáticamente”? Vamos começar com algo simples: arquivos em lote simples que façam coisas simples. Depois arquivos em lotes que leiam variáveis.
Arquivos em lote, em inglês, são chamados de arquivos “batch”. No DOS, um arquivo em lote recebe a extensão “bat”. Assim, podemos salvar uma série de comandos usados com freqüência em um único lugar.
Já que estamos no DOS, façamos tudo em DOS. Digite o seguinte:
edit c:\mostradata.bat
Observe no explorer que o arquivo ainda não existe.
Você viu que abriu um editor com fundo azul. Este é o conteúdo de mostradata.bat.
Vamos fazer alguma coisa aqui. Digite o seguinte:
cls
echo.
echo Data atual:
echo %date%
echo.
echo.
pause
Agora pressione Alt+A e escolha S para salvar. Agora você vê o iconezinho em bat no explorer, ou seja, ele existe.
Dê um Alt+A e escolha R para sair daí.
Agora que você está novamente na telinha escura do DOS, dê um cls para limpar a tela e digite:
mostradata
Bom, o que aconteceu aqui é uma sucessão de bizarrices, certo?
Deve ter aparecido algo assim:
C:\>echo.
C:\>echo Data atual:
Data atual:
C:\>echo 17/10/2008
17/10/2008
C:\>echo.
C:\>echo.
C:\>pause
Pressione qualquer tecla para continuar. . .
Percebe como os comandos escritos no bat foram executados como se tivessem sido escritos no prompt?
Algo precisa ser feito! Digite…
edit c:\mostradata.bat
…ou apenas use a seta para cima para achar esse comando no histórico.
Na primeira linha do BAT, antes do primeiro echo, digite o seguinte:
@echo off
Salve, saia do editor e execute de novo.
Agora sim! Os comandos desapareceram e a data foi escrita corretamente! Parabéns, você escreveu um arquivo BAT!
@echo off é um comando usado para esconder os demais comandos. Você talvez tenha percebido que esse comando, no entanto, também não aparece. Isso não é uma coincidência, pois o que aconteceu foi que o arroba antes do comando esconde esse comando no DOS. Isso quer dizer que, se você quiser, pode escrever todo o arquivo bat com arrobas na frente. Claro que é muito pouco prático, para não dizer idiota.
%date% é uma variável do DOS que retorna o valor da data de acordo com os parâmetros do sistema. Nesse caso, meu sistema, que está em português, me deu o valor da data na formatação dd/mm/aaaa. Dependendo da distribuição do windows, essa formatação pode mudar. Mas não vamos nos aprofundar em datas por hoje, vamos continuar. Queremos agora passar um parâmetro. O que é isso, você se pergunta?
Leia e verás…
Vamos começar um novo bat. Agora ele vai te saudar de acordo com seu nome. Siga o modelo:
edit ola.bat
@echo off
cls
set nome=%1
echo.
echo Ola’%nome%!
echo Hoje e’%date%
echo.
pause
Salve e saia do editor.
Agora, se seu nome for, por exemplo, Gorgulho, digite o seguinte comando:
ola Gorgulho
Então. “Gorgulho” aqui nada mais é do que um parâmetro.
Dentro do bat o parâmetro passado é reconhecido pela ordem em que foi escrito.
Depois do nome do arquivo BAT (“ola”), foi escrito o nome, que é o parâmetro 1 do código. Os parâmtros são identificados dentro do bat através do símbolo de porcentagem, assim: %1, %2, %3, etc.
Nós fomos mais além e declaramos uma variável com o comando set. O nome da variável é nome. Note que era perfeitamente possível escrever o conteúdo do parâmetro 1 sem usar a variável nome, mas dar um nome para a variável é sempre válido, pois fica muito mais fácil entender o código.
Por hoje vamos parar aqui.
Semana que vem continuamos em um estágio mais avançado.
Portanto, na sua telinha do DOS, digite: exit.
Neste post você aprendeu:
1 – Executar o prompt;
2 – Editar arquivos no DOS;
3 – Limpar a tela do DOS;
4 – Criar um arquivo em lotes simples;
5 – Retornar uma variável com data;
6 – Imprimir textos através de BATs;
7 – Esconder comandos escritos em um arquivo BAT;
8 – Passar um parâmetro para um arquivo BAT;
9 – Declarar uma variável no DOS;
10 – Escrever, através de um BAT, o valor de uma variável.
Muito bom! Estava precisando de uma noção para automatizar o log de algumas informações e não sabia como fazer. Mas consegui depois de lê esse tutorial.
Muito bom! Esclareceu algumas duvidas importantes que estava procurando.
Se possível gostaria de saber se existe a possibilidade de escrever uma frase na janela do DOS ao mesmo tempo que imprima para um arquivo?
EX:
echo amendoin > c:\teste.txt
que apareça tbm no prompt a palavra amendoin
Fico grato desde já pela atenção.
gostei muito do post, gostaria de receber o material completo via e-mail.