Translate

Quanto já ganhei

domingo, 14 de julho de 2013

Comandos DOS e arquivos .bat (Parte 2)

Criando arquivos .bat (arquivos em lotes)


OBS.: 1) Os programas prontos, para melhor identificação, por padrão, estarão inseridos dentro de tabelas como esta:

  1. Linha Um
  2. Linha Dois
  3. Linha Três 
  4. Linha Quatro
  5. Linha Cinco
  6. Linha Seis
  7. Linha Sete
  8. Linha Oito
  9. Linha Nove
  10. Linha Dez

         2) É altamente recomendado, para melhor aprendizagem, que ao invés de copiar e colar, digite todo conteúdo dos exemplos, dessa forma terá maior fixação dos comandos e sintaxe dos mesmos.
3) Todos os testes dos exemplos foram realizados utilizando como sistema operacional o Windows 8, o que não significa que funcionará no mesmo.

Para começar, necessitamos de um editor de textos simples, onde o Bloco de Notas do Windows se aplica bem a este caso. Depois de digitarmos os comandos desejados, iremos salvar o arquivo com a extensão .bat, transformando-o assim em um arquivo reconhecido pelo sistema, fazendo com que, para abri-lo seja preciso apenas dar um duplo clique.
É recomendável que nossos programas .bat, iniciem-se com dois comandos: @echo off e title. O primeiro desativa a exibição dos comandos na tela, ou seja, não irá aparecer o nome do comando, mas sim o resultado que ele proporciona. O segundo é onde definimos o título do programa (por exemplo, como aparece agora no seu navegador o título “Cabeça Nerd”).
Nada melhor para aprender algo novo do que praticando. Digite as seguintes linhas:

  1. @echo off
  2. title Blog Cabeca Nerd
  3. echo Primeiro Programa bat!
Salve com um nome preferido mas, não esqueça de digitar também a extensão .bat logo após o nome. Na terceira linha vemos um comando novo, echo, que serve para exibir na tela uma mensagem. Agora execute seu programa e veja o que acontece. Viu? Difícil né?! O seu arquivo funcionou corretamente, entretanto, depois da leitura da linha de número 3 não temos nenhum outro comando, logo, a tela foi fechada normalmente impossibilitando a visualização. Para reparar devemos adicionar mais um comando o pause (seu papel o seu nome já diz, pausa a execução e também mostra uma mensagem para que digite uma tecla qualquer para dar prosseguimento). Por questões de estética na apresentação ao usuário, vamos acrescentar uma linha em branco entre a mensagem “Primeiro Programa bat” e a mensagem provocada pelo comando pause, para isso usa-se echo. (é o comando echo acrescentando-se um ponto “.”) . A estrutura completa ficará:

  1. @echo off
  2. title Blog Cabeca Nerd
  3. echo Primeiro Programa bat!
  4. echo.
  5. pause

Uma das características de um nerd a qual o leva a aprender muitas coisas é a curiosidade. Mesmo você não sendo um nerd, seja curioso também e experimente apagar a primeira linha para ver qual a diferença entre usar e não @echo off

Usando o conceito de variáveis no Prompt de Comando
Variáveis são espaços na memória que servem para armazenar informações, onde as mesmas serão usadas em um determinado programa. Para utilizarmos esse conceito em arquivos .bat ou diretamente no Prompt de Comando, existe  o comando set, onde podemos exibir, definir ou remove tais variáveis. Caso você precise repetir a mesma informação em vários pontos de seu programa é interessante que se use variáveis. Digamos que a informação repetida seja “Blog Cabeca Nerd”, para não repetir tudo isso poderíamos armazenar na variável “blog” (a variável “blog” passaria a ser uma constante). Exemplo: set blog=Blog Cabeca Nerd
Para chamar (utilizar) a variável, coloca-se a mesma entre sinais de porcentagem, %variavel%. Exemplo: echo %blog% . If Se não estiver entre sinais de porcentagem não funcionará.




Entrada de dados no Prompt de Comando
Vejamos a seguinte situação: você deve escrever um programa que peça o nome do usuário e depois mostre na tela. If Se nós fizéssemos como no exemplo anterior teríamos sempre que editar o código fonte, assim, a melhor opção é um programa que realmente peça o nome ao usuário, armazene-o em uma variável e depois exiba-a na tela.
Para capturar e guardar o que é digitado usa-se o comando set juntamente com o parâmetro /p seguido da variável com o sinal de “=”. Exemplo: set /p variavel=


  1. @echo off
  2. title Entrada de dados
  3. echo Digite seu nome:
  4. set /p nome=
  5. cls
  6. echo Seu nome eh %nome%
  7. echo.
  8. pause

Comando if no Prompt de Comando
If (se, em português) é uma estrutura condicional, ou seja, algo só irá ocorrer se a condição for verdadeira. Como exemplo, vamos fazer um menu bem simples para entender melhor esse comando, onde a ideia é comparar o que o usuário digitou, armazenado pela variável “opcao”, com as condições do if que, dependendo do valor, exibirá a mensagem específica:


  1. @echo off
  2. title Comando if
  3. echo 1-Primeira Opcao
  4. echo 2-Segunda Opcao
  5. echo 3-Terceira Opcao
  6. echo.
  7. echo Escolha um numero:
  8. set /p opcao=
  9. cls
  10. if %opcao%==1 echo Escolheu Primeira Opcao
  11. if %opcao%==2 echo Escolheu Segunda Opcao
  12. if %opcao%==3 echo Escolheu Terceira Opcao
  13. echo.
  14. pause


Muitas vezes precisamos fazer comparações como “se a variável for maior que...” ou “se a variável for menor ou igual a...” a isso damos o nome de operadores condicionais. Tabela segue abaixo (à primeira vista os operadores parecem ser um pouco estranhos, mas existe a explicação de cada um): 



Operador
Palavra em Inglês
Tradução
EQU ou ==
EQUals
Igual
NEQ
Not EQuals
Diferente
LSS
LeSS
Menor
LEQ
Less or EQuals
Menor ou igual
GTR
GreaTeR
Maior
GEQ
Greatervor EQuals
Maior ou igual


Comando else no Prompt de Comando
Else (senão, em português) serve para, caso a condição do if não seja satisfeita, automaticamente serão executados os comandos contidos no else. Exemplo: Programa que peça a idade do usuário, se (if) a idade (variável) for maior ou igual a (geq) 18, mostrará na tela (echo) a mensagem “Menor de idade”, senão (else) exiba (echo) a mensagem “Maior de idade”. Muito fácil né!?


  1. @echo off
  2. title Estrutura else
  3. echo Qual a sua idade?
  4. set /p idade=
  5. cls
  6. if %idade% geq 18 (
  7. echo Maior de idade
  8. ) else (
  9. echo Menor de idade
  10. )
  11. echo.
  12. pause


OBS.: Prestem muita atenção aos parênteses, um deles estando na posição errada e o programa não funcionará corretamente. O primeiro parêntese é aberto logo após a declaração do if (não esqueça do espaço em branco antes do parêntese) onde abrange todos os comandos relacionados ao if, feche-o na mesma linha do else (não esqueça do espaço em branco depois do parêntese), após o else abra outro parênteses (não esqueça do espaço em branco antes do parêntese) para por os comandos relacionados ao else. Para fechar, coloque-o em uma linha deixando-o sozinho.


Comando goto no Prompt de Comando
Com o comando goto poderemos “andar” por entre as linhas de código dos nossos programas, dando-nos a possibilidade de irmos a um ponto específico do código. Com ele é possível também fazer loops, ou seja, ao fim de determinados comandos, volta-se ao início dos mesmos. Sua sintaxe é o nome do comando junto com um rótulo (entenda rótulo como sendo o nome que faz referência ao ponto onde o comando goto irá direcionar a continuação da leitura do programa pelo Prompt de Comando) o mesmo deve ser iniciado por “:”.

  1. @echo off
  2. title Comando goto
  3. :inicio
  4. cls
  5. echo Qual a sua idade?
  6. set /p idade=
  7. cls
  8. if %idade% geq 18 (
  9. echo Maior de idade
  10. ) else (
  11. echo Menor de idade
  12. )
  13. echo.
  14. pause
  15. cls
  16. echo 1-Continuar
  17. echo 2-Fechar
  18. echo.
  19. echo Escolha um numero:
  20. set /p opcao=
  21. cls
  22. if %opcao%==1 goto inicio
  23. if %opcao%==2 goto fim
  24. :fim
  25. exit


 Na Parte 3 iremos aumentar o nível de dificuldade fazendo um programa mais completo e estruturado. Veja também Comandos DOS e arquivos .bat (Parte 1)

5 comentários:

  1. legal o teu blog. aqui um programa meu que faz uma pergunta. ai quem quiser pode alterar ele e ai fazer do jeito que voce quise. o programa e esse. abaixo. não se preucupe. não colequei nenhuma linha de comando que va afetar o seu pc.



    @ECHO OFF
    ECHO:
    ECHO 00000000000000000000000000000000000000000000000000000000000
    ECHO OQUE E ISTO?
    ECHO 00000000000000000000000000000000000000000000000000000000000
    ECHO.
    ECHO a . Isto e notepad
    ECHO b . Isso e prompt de comando
    ECHO c . Sair
    ECHO.
    SET /P M=escreva a letra(a, b, ou c) correspondente a sua opcao e em seguida aperte ENTER:
    echo:
    IF %M%==a GOTO Errado
    IF %M%==b GOTO Correto
    IF %M%==c GOTO EXIT
    :EXIT
    exit
    :Correto
    echo Voce esta certo!
    GOTO END
    :Errado
    echo Voce esta errado. Isto e um prompt de comando.
    GOTO END
    :END
    PAUSE

    ResponderExcluir
    Respostas
    1. "IF %M%==c GOTO EXIT" depois do c executa uma linha de comando quando escrevem c, o comando GOTO significa pro prompt que ele tem que ir para o "EXIT", se você trocá-lo de vez para exit (comando exit) irá reduzir o tamanho. isso serve somente quando é UMA linha de comando.

      Excluir
  2. vlw kra
    se puder entre em contato cmg, preciso aprender mais

    Talvez eu possa juda-lo em algo ou ajudar alguem a aprender tb ner

    noobbr616@gmail.com

    se quiser me ensinar algo e mandar um oi que eu to sempre online

    ResponderExcluir