Anda di halaman 1dari 19

Pr-texto

Para montarmos um arquivo.bat devemos ter um amplo conhecimento das funes do Prompt
de Comando, tambm chamado de MS-DOS e de CMD.
Neste tutorial alguns comandos sero abordados mas para maiores informaes de comandos
do CMD deixo este link:

http://www.babooforum.com.br/forum/index.p...howtopic=137759

J adiantando...
Para qualquer comando no CMD, para saber suas funes, basta digitar o nome do
comando mais /? e teclar 'enter'
Para vermos uma lista de comandos digitamos help

Se formos apertando a seta superior, os comandos antes digitados vo aparecendo, do


ltimo ao primeiro
Para selecionarmos um subdiretrio, s ir clicando TAB que eles vo aparecendo.
usado em cd, dir, etc.
Para colarmos um texto temos que usar o mouse, pois o Ctrl+V no funciona
Tanto faz se usarmos letras maisculas ou minsculas, pois antes de ser feita a
interpretao do programa feita a traduo das letras para maisculas.

Agora sim podemos ir propriamente ao tutorial de batch files...

P.S.: Os exemplos executam e saem direto. Para ver o que eles fazem
acrescentem o comando pause para ele esperar que voc aperte uma tecla,
porm assim aparecer pressione qualquer tecla para continuar. . . para no
aparecer nenhuma mensagem utilize o comando pause >nul .

Introduo
Antes de tudo, indicar o porqu os processos so chamados batch. A razo por ele se chamar
bat porque no ms-dos requere-se como mximo trs letras na extenso e por tanto os
arquivos tem a extenso .bat
Este tipo de arquivo pode ser muito perigoso, pois eles so capazes de destruir o sistema
operacional sem o usurio saber deletando a pasta principal, enchendo o HD, desconfigurando
a inicializao do sistema, entre outros. Por isso recomendado que apenas execute jobs
batch conhecidos. No windows, estes arquivos podem ser facilmente editados clicando com o
boto direito do mouse nele e clicando em Editar. Voc pode fazer um utilizando o bloco de
notas do windows onde cada linha um comando diferente de MS-DOS e ao final, salve-o
sempre com o final do nome .bat (por_exemplo.bat).

O que se pode fazer com eles?


Pode fazer de forma automatizada tudo aquilo que se pode fazer no console do ms-dos.

Como faa um arquivo bat?


Coloque em texto. Apenas decidir onde colocar, pode coloc-lo no bloco de notas ou algum
editor ascii.
Ao guard-los devem ter a notao de nomes prprios do ms-dos. Este nome com no mximo
8 letras (espao e \ no so permitidos) logo um ponto e a extenso que neste caso
obrigatoriamente bat.

Como posso selecionar vrios arquivos?


Para ele tem que se levar em conta os nomes dos arquivos, devem cumprir a notao do msdos (8 letras sem espao como mximo, logo um ponto e trs letras como mximo da
extenso. Pode se utilizar os comandos;

*Equivale a vrios caracteres.


?Equivale a apenas um caracter.

Exemplos:

comando *.doc -> selecionar todos os arquivos que tenham a extenso doc.
comando a*.doc -> selecionar todos os arquivos que comecem por a e tenha a extenso doc.
comando a*b.doc -> selecionar todos os arquivos que comecem por a, acabem por b e tenham
a extenso doc.
comando *mao*.doc -> selecionar todos os arquivos que contenham 'mao' e tenham a
extenso doc.
comando c?mao.doc -> selecionar todos os arquivos que contenham 'c', logo um carater
qualquer e logo 'mao'. Deve ter tambem a extenso doc.
comando c?b*.* -> selecionar todos os arquivos que comecem por 'c', tenham um caracter
qualquer, logo um b e qualquer extenso.
comando *.b?t -> selecionar todos os arquivos que tenham a extenso que comece por b, logo
um caracter qualquer e logo um t.

Quem so as trajetrias e os patchs?


A trajetria o nome completo de um arquivo e indica a situao exata de um arquivo e seu
nome.
Se digo que o arquivo se chama arquivo.txt indico seu nome, mas nada mais. Se supoe que se
encontra no diretrio atual.
Se digo c:\arquivo.txt indico que o arquivo que me interesse se chama arquivo.txt e se encontra
no diretrio riz de C.
Dado que no ms-dos nao se admite nomes grandes ( mais de 8 letras ) nem espao, quando
quero utilizar o nome do windows em ms-dos devo saber que este ser reconvertido em seu
nome curto. Este se obtm os seis primeiros caracteres vlidos do nome, logo o sinal ~ (alt
126) e logo um nmero.

Que comandos podemos utilizar?


Comandos;
Aqui esto alguns comandos utilizados em batch.
ECHO [mensagem ou varivel]

Escreve na tela

ECHO OFF

Desativa as informaes e confirmaes feitas pelo sistema. Como "C:>", "Tem certeza que
deseja fazer tal?"....

ECHO ON

Ativa as informaes e confirmaes do sistema.

ECHO.

Pula uma linha


SET varivel=valor

Cria ou modifica uma varivel (espao reservado temporariamente na memria RAM para
guardar algumas informaes numricas, de caracteres, positivo/negativo entre outros. No
podem ter acento e devem comear com letra). Para chamar a varivel posteriormente basta
coloc-la entre "%".

Por exemplo:
CODE
SET nome=Tex
ECHO O nome dele %nome%

Condies
Numricas e Caracteres:
o Igual (EQU ou ==)
o Diferente (NEQ)
o Menor que (LSS)
o Menor ou igual a (LEQ)
o Maior que (GTR)
o Maior ou igual a (GEQ)
o Condio negativa (NOT)
Variveis:
o Definido (DEFINED [varivel sem %])
o Condio negativa (NOT)

Em arquivos:
o Existe (EXIST)
o Condio negativa (NOT)

Os smbolos acima vm das seguintes fontes:

EQU vem da palavra inglesa EQUals (Igual).


NEQ vem da palavra inglesa Not EQuals (No-Igual, diferente)
LSS vem da palavra inglesa LeSS (Menor)
LEQ vem da palavra inglesa Less or EQuals (Menor ou Igual)
GTR vem da palavra inglesa GreaTeR (Maior)
GEQ vem da palavra inglesa Greater or EQuals (Maior ou Igual)
NOT uma palavra inglesa que significa No
DEFINED uma palavra inglesa que significa Definido
EXIST uma palavra inglesa que significa Existe

Caracteres
As condies numricas e de caracteres so iguais, porm avaliam de maneira diferente. Por
exemplo, se compararmos "Ana" com Danielle na condio LEQ (Menor ou igual), ser
avaliado o tamanho . "Ana" tem 3 bytes e "Danielle" tem 8. Ento "Danielle" maior que "Ana"
e a condio positiva.
Veja como ficaria:

CODE

@ECHO OFF
SET nome1=Ana
SET nome2=Danielle
REM O resultado da condio abaixo ser
positivo
IF "%nome1%" LEQ "%nome2%" ( ECHO Positivo )
ELSE ( ECHO Negativo )

Numricas

Nas condies numricas no h mistrio, as duas nicas diferenas entre as condies


numricas e de caracteres que nas numricas so avaliados os nmeros, no o tamanho, e
que voc no usa aspas. Vamos supor que a Ana tem 23 anos e que a Danielle tem 19. Se
compararmos as suas idades respectivamente usando LSS (Menor que) o resultado ser
negativo.
Veja como ficaria:

CODE
@ECHO OFF
SET ana=23
SET danielle=19
RO EM resultado da condio abaixo ser negativo
IF %ana% LSS %danielle% ( ECHO Positivo ) ELSE ( ECHO Negativo )

Variveis
A condio DEFINED verifica se uma varivel j foi definida. Por exemplo, se a varivel "x"
estiver definida, ento o resultado ser positivo, seno negativo.
Veja como ficaria:

CODE
@ECHO OFF
IF DEFINED x ( ECHO Positivo ) ELSE ( ECHO Negativo )

Arquivos
A condio EXIST verifica se existe algum arquivo. Por exemplo, se existir o arquivo
"exemplo.bat" o resultado ser positivo, seno negativo.
Veja como ficaria:

CODE

@ECHO OFF
IF EXIST exemplo.bat ( ECHO Positivo ) ELSE ( ECHO Negativo )

Esta condio no para por a. No sistema MS-DOS, voc pode fazer uma "pesquisa" na pasta
em que est por um arquivo digitando parte dele. Voc usa "*" para indicar a(s) parte(s) que
voc no sabe. Por exemplo, se existir algum arquivo com a extenso ".bat" na pasta atual o
resultado ser positivo, seno negativo.
Veja como ficaria:

CODE
@ECHO OFF
IF EXIST *.bat (ECHO Positivo ) ELSE ( ECHO Negativo )

:nomedolink

Nomeia um ponto do arquivo de lote permitindo avanar ou voltar a execuo a partir daquele
ponto.

CLS
Esse comando limpa toda a tela. CLear Screen.

@[Comando]
Desativa as informaes e confirmaes feitas pelo sistema apenas para esta linha.

IF [condio] (
[ao]
) ELSE (
[ao2]
)

Esse um comando condicional. "Se condio faa ao, seno faa ao2".

Por exemplo:

CODE

@ECHO OFF
SET nome=Tex
IF "%nome%"=="Tex" (
ECHO Ola Tex!
) ELSE (
ECHO Ola %nome%!
)

GOTO [ponto]
Avana ou volta a execuo para um ponto do arquivo de lote.

FOR /L %%variavel IN (inicio,incremento,fim) DO comando [parmetro]

Repete um comando varias vezes fazendo incrementaes at o fim ser atingido.

/L, uma opo do comando FOR que faz as incrementaes.


%%varivel, o nome da varivel que vai ser incrementada.
inicio, o valor de inicio da varivel que ser incrementada.
incremento, nmero que ser somado a cada incrementao.
fim, a repetio ir acabar quando o valor da varivel atingir este valor.
comando, um comando que ser repetido.
[parmetro], o parmetro do comando que ser repetido.

Por exemplo:

@ECHO OFF
FOR /L %%a IN (1,1,5) DO ECHO O valor de A %%a

PAUSE
Faz uma pausa e s volta quando o usurio apertar alguma tecla do teclado.

REM [comentrio]
Este comando no faz absolutamente nada. Ele utilizado para inserir comentrios nos
arquivos.

PROMPT
Serve para abrir o prompt do MS-dos. O mais habitual $p$g que corresponde a;

$p = mostrar trajeto atual


$g = mostrar o separador >
$l = mostrar o separador <
$b = mostrar o separador |
$q = mostrar o separador =
$$ = mostrar o sinal $
$t = mostrar a hora
$d = mostrar a data
$v = mostrar a verso do sistema
$n = mostrar unidade atual
$h = retrocesso. Apaga o caractere prvio
$e = esc. Mostra o sinal corresponde a ASCI 27

Por isso se colocarmos prompt $p$g o cursor mostra a trajetria de onde estamos e logo o
separador. possvel o texto ( por exemplo prompt Meu_nome $p$g ).

DATE
Ver/por a data do sistema

TIME
Ver/por a hora do sistema

VER[/font]
Verso do sistema
[font=Verdana]VOL unidade
Volume da unidade especificada

MEM parmetros
Mostra a memria usada e livre no sistema
/p -> mostra por programas
/d -> por programas controladores
/c -> classifica por tamanho

Comandos de manejos de arquivos


COPY origem destino
Serve para copiar arquivos de um lugar a outro. A origem deve ser um trajeto completo de
onde esto os arquivos a copiar. Se se omite se entende no diretrio atual.

O destino deve ser uma trajetria completa de onde desejar o/os arquivo(s)
copy meuarquivo.txt c:\ (copi-lo do diretrio raiz de C)
copy meuarquivo.txt c:\meuarq.txt (copi-lo e poder mudar o nome a meuarq.txt)
copy *.txt a:\ (copiar todos os arquivos que tenham a extenso txt a unidade A)
copy *.txt c:\meusdo~1 (copiar todos os que tenham a extenso txt ao diretrio Meus
documentos ( cujo o nome curto meusdoc~1).

Apagar arquivos selecionados


DEL arquivo(s)
del lol.txt (apaga o arquivo lol.txt no diretrio atual)
del c:\lol.txt (apaga o arquivo lol.txt que se encontra no c:\)
del arquiv~1\*.*(apaga os arquivos que se encontram no diretrio 'Arquivos de programa' cujo
nome curto arquiv~1( no se apaga as subpastas)

DELTREE arquivo(s) -y
Apaga a raiz especificada ( se um arquivo coloca o arquivo, se uma pasta coloca a pasta
com todas as subpastas que incluam).
Com o parmetro -y no pergunta cada vez
Este comando na realidade no um comando sim uma utilidade includa no ms-dos.

DIR trajeto
Mostra uma lista do contedo do diretrio especificado no trajeto. Se no especificado nada, se
entende o atual.
Se coloca como parmetro /W mostra uma lista resumida
Se coloca como parmetro /P mostra uma lista utilizando o filtro more.

Para pesquisar um arquivo: dir/s diretrio:\arquivo.extensao


Ex.: Procurar o arquivo lista.txt em C

Dir/s c:\lista.txt

ATTRIB arquivo(s)
Mostra os arquivos dos diretrios indicados e nesse caso permite mud-los.
os atributos so:
H -> oculto. Se ativa com +h e desativa com -h
R -> Leitura. Apenas leitura com +r, normal com -r
S -> Sistema. Se ativa com +s e desativa com -s
A -> Modificado. Para copias de segurana incrementado. +a indica modificado e -a indica no
modificado.
Attrib arquivotex.txt (mostrar os atributos do arquivotex.txt)
attrib *.exe +r +r +s (coloca todos os arquivos com extenso exe como ocultos, do sistema e a
apenas l).

RENAME ou REN nome1 nome2


Mudar o nome do arquivo
Ren nome1.txt nome2.txt

TYPE arquivo
Mostra por pasta o contedo do arquivo;
type nomedoarquivo.txt

* Todos aqui listados so comandos de MS-DOS que foram criados especificamente


para arquivos de lote. Se voc precisar de mais detalhes sobre cada um deles basta digitar no
MS-DOS (ou no prompt de comando do Windows) [comando]/? Todos comandos de MS-DOS
tambm entram nesta lista incluindo chamadas de outros programas para este sistema.

Comandos para programao

EDIT arquivo
Editor de textos utilizado para editar scripts e arquivos de texto.

DEBUG arquivo parmetros de arquivo


Inicia o desassembler com o programa indicado que se colocam por parmetros.

CHOICE texto opes


Se utiliza em programas bat para dar elegir a um usuario entre um conjunto de opes
A resposta se devolve mediante a varivel errorlevel
choice Eleja uma opo snc

if errorlevel 1 goto ...


if errorlevel 2 goto ...
if errorlevel 3 goto ...

Este exemplo mostra a lateral "eleja uma opo e da a eleger s (sim), n (no) o C (continuar)
por exemplo as tres seguintes linhas especificam aonde deve sair o fluxo do programa seguido
da tecla pulsada.

Variveis
A condio DEFINED verifica se uma varivel j foi definida. Por exemplo, se a varivel "x"
estiver definida, ento o resultado ser positivo, seno negativo.
Veja como ficaria:

CODE
@ECHO OFF
IF DEFINED x ( ECHO Positivo ) ELSE ( ECHO Negativo )

Arquivos
A condio EXIST verifica se existe algum arquivo. Por exemplo, se existir o arquivo
"exemplo.bat" o resultado ser positivo, seno negativo.
Veja como ficaria:

CODE
@ECHO OFF
IF EXIST exemplo.bat ( ECHO Positivo ) ELSE ( ECHO Negativo )

Esta condio no para por a. No sistema MS-DOS, voc pode fazer uma "pesquisa" na pasta

em que est por um arquivo digitando parte dele. Voc usa "*" para indicar a(s) parte(s) que
voc no sabe. Por exemplo, se existir algum arquivo com a extenso ".bat" na pasta atual o
resultado ser positivo, seno negativo.
Veja como ficaria:

CODE
@ECHO OFF
IF EXIST *.bat (ECHO Positivo ) ELSE ( ECHO Negativo )

EXEMPLO: x igual a 6?

CODE
@ECHO OFF
CLS
SET X=6
IF "%X%" == "6" GOTO ok
ECHO X no igual a 6, X igua a %X%
GOTO saida
:ok
ECHO X igual a 6
:saida

Na primeira linha. O "@" indica que no para aparecer o comando que segue, no caso,
"ECHO" (Comando que escreve na janela). Nesta linha, eu estou grosseiramente mandando o
MS-DOS calar a boca (no falar nada sem eu mandar), pois se ECHO faz o computador "falar",
ECHO OFF faz o computador "desligar a boca" e com o @ no comeo da linha, ele nem vai
informar ao usurio que est parando de falar.
Na segunda linha, o comando CLS faz o MS-DOS apagar toda a tela.
Na terceira linha, como j foi explicado, faz a varivel X=6.
Na quarta linha, uma linha condicional. Se "X" for igual 6 v para "ok".
Na quinta linha, bivio que X no vai ser igual a 6, ento o MS-DOS vai "falar" X no igual
a 6, X igua a [valor de x].
Na sexta linha, ele ir para o ponto "saida" porque o resto feito se X for igual a 6.
Na stima linha, est sendo definido o ponto "ok", aquele ponto citado na quarta linha.
Na oitava linha, X ser igua a 6, ento o MS-DOS vai dizer X igual a 6.
E na nona linha, definido o ponto-final do processamento. Que chamado na sexta linha,

nada mais que isso, ento o MS-DOS entende que o batch concluiu.

Faa o teste
1. Abra o Bloco de notas do Windows;
2. Copie o exemplo acima e cole nele;
3. Salva-o como exemplo.bat;
4. D dois-clicks nele observe o que acontecer;
5. Agora experimente modificar a terceira linha por SET X=qualquer coisa;
6. Execute e veja o que acontece.

Mensagem de acordo com a idade:

CODE
@ECHO OFF
SET idade=19
IF %idade% LSS 10 (
ECHO Bom dia rapaz!
ECHO.
ECHO Voc no vai pra faculdade?
) ELSE (
IF %idade% LSS 18 (
ECHO Bom dia rapaz!
ECHO.
ECHO Voc no vai pra faculdade?
) ELSE (
IF %idade% LEQ 64 (
ECHO Bom dia!
ECHO.
ECHO Voc no vai trabalhar hoje?
) ELSE (
ECHO Bom dia!
ECHO.
ECHO Tudo bem?
)
)
)

Esta uma forma mais avanada de usar o comando condicional IF. Isso quase idntico a
Algoritmo. Ele avalia a varivel %idade%. Se %idade% for menor que 10 ento escreva tal;
Seno, se %idade% for menor que 18 ento escreva tal; Seno se %idade% for menor ou igual
a 64 ento escreva tal; Seno obviamente %idade% maior que 64, ento imprima tal.

Faa o teste
1. Abra o Bloco de notas do Windows;
2. Copie o exemplo acima e cole nele
3. Salva-o como exemplo2.bat;
4. D dois-clicks nele observe o que acontecer;
5. Agora experimente modificar a segunda linha por SET idade=n (troque n por algum nmero);
6. Execute e veja o que acontece.

Programando;
Existe uma infinidade de comandos, como mostrei acima, e s usar a imaginao e podemos
programar uma imensido de finalidades, basta usar a criatividade e alguns comandos, para
fechar esse tutorial, vou abordar alguns cdigos feito pelo autor..

Exemplo Intermedirio/Avanado

CODE
@echo off

cls

Echo .
Echo Comear o programa?
pause
Echo .
Echo .
Echo .
Echo Este programa cria uma chave de inicializaao de um arquivo no

windows atravs do menu.


Echo .
Echo .
Echo [1] Deseja que esse arquivo se inicie no seu proximo logon?
Echo [2] Deseja sair do programa?

Set /p choice=Digite o numero correspodente a sua opao:

if "%choice%"=="2" goto op2


if "%choice%"=="1" goto op1

rem Bloco de declaraao dos gotos


:op1 reg add "hklm\Software\Microsoft\Windows\CurrentVersion\Ru n" /v
teste2 /t REG_SZ /d c:\path\battex.bat&goto proximo

:op2 exit

:proximo
Echo .
Echo .
Echo Chave criada com sucesso.
Echo .
Echo .
Echo Agora mostrarei a chamada de um outro arquivo bat sem a
interrupo do arquivo.

Echo [1] Deseja chamar o arquivo battex.bat?


Echo [2] Deseja sair do programa?

Set /p choice=Digite o numero correspondente a sua opao:

if "%choice%"=="2" goto op3


if "%choice%"=="1" goto op4

:op3 call battex.bat&goto proximo2

:op4 exit

Exemplo 2

Para encerrar deixo aqui um exemplo de criao de menu...

CODE
@echo off
goto lista

:lista
cls
echo desligar em 100 segundos -

echo reiniciar em 100 segundos - 2


echo cancelar desligamento -

echo sair -

4
echo.
echo.

set /p opcao=Informe sua opcao

if /i "%opcao%"=="1" goto 1
if /i "%opcao%"=="2" goto 2
if /i "%opcao%"=="3" goto 3
if /i "%opcao%"=="4" goto 4

goto erro

:1
shutdown -s -t 100
goto lista

:2
shutdown -r -t 100
goto lista

:3

shutdown -a
goto lista

:4
exit

:erro
echo.
echo.
echo opcao invalida
echo.
echo.
goto lista

Exercicio

1 - Criar 2 arquivos de lote com os seguintes procedimento:

arquivo teste1.bat
Limpa a tela
Copia o arquivo do driver D: para o HD
Formata a unidade a:

Arquivo: Teste2.bat
Limpa a tela
verifica a versao do sistema operacional
Copiar o mesmo arquivo de hd para o pendrive

2 Criar um arquivo de lote para

limpar a tela
verificar a data do sistema
verificar hora do sistema
exibir mensagem a data e hora do sistema estao corretas
Dar pausa

3 Usando o comando for criar um lao para repetir a sequencia de numero de 1 a 10

4 Criar um Bat para add um chave de registro para bloquear o painel de controle.

5 Criar Um bat para criar 5 diretorios teste1, teste2, teste3, test4 .

6- Criar um bat para redefinir o ip da maquina para 192.168.3.3