Você está na página 1de 8

http://www.invasao.com.

br/2011/01/12/aprenda-a-programar-em-bat/
Introduo
Antes de tudo, indicar o porqu os processos so chamados batch. A razo por ele se ch
amar bat porque no ms-dos requere-se como mximo trs letras na extenso e por tanto o
s arquivos tem a extenso .bat
O que se pode fazer com eles?
Pode fazer de forma automatizada tudo aquilo que se pode fazer no console do msdos.
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 l
etras (espao e \ no so permitidos) logo um ponto e a extenso que neste caso obrigato
riamente bat.
Como posso selecionar vrios arquivos;
Para ele tem que se levar em conta os nomes dos arquivos, devem cumprir a notao do
ms-dos (8 letras sem espao como mximo, logo um ponto e trs letras como mximo da ext
enso. 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 exten
so 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 ext
enso 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 caract
er 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 s
eu nome.
Se digo que o arquivo se chama arquivo.txt indico seu nome, mas nada mais. Se su
poe que se encontra no diretrio atual.
Se digo c:\arquivo.txt indico que o arquivo que me interesse se chama arquivo.tx
t e se encontra no diretrio riz de C.
Dado que no ms-dos nao se admite nomes grandes ( mais de 8 letras ) nem espao, qu
ando quero utilizar o nome do windows em ms-dos devo saber que este ser reconvert
ido em seu nome curto. Este se obtem os seis primeiros carcteres vlidos do nome, l

ogo 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
a fazer tal? .

C:> ,

Tem certeza que dese

ECHO ON
Ativa as informaes e confirmaes do sistema.
ECHO.
Pula uma linha
SET variavel=valor
Cria ou modifica uma varivel (espao reservado temporariamente na memria RAM para gu
ardar algumas informaes nmericas, de caractres, positivo/negativo entre outros. No po
dem ter acento e devem comear com letra). Para chamar a varivel posteriormente bas
ta coloca-la entre % .
Por exemplo:
SET nome=Storm
ECHO O nome dele %nome%
:nomedolink
Nomeia um ponto do arquivo de lote permitindo avanar ou voltar a execuo apartir daq
uele ponto.
CLS
Esse comando limpa toda a tela. CLear Screen.
@[Comando]
Desativa as informaes e confirmaes feitas pelo sistema apenas para esta linha.
CODE
IF [condio] (
[ao]
) ELSE (
[ao2]
)
Esse um comando condicional.
Por exemplo:
CODE

Se condio faa ao, seno faa ao2?.

@ECHO OFF
SET nome=Storm
IF %nome% == Storm
ECHO Ola Storm!
) 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.
%%variavel, 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:
CODE
@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 comentarios no
s arquivos.
CODE
PROMPT ->Serve para abrir o prompt do msdos. O mais habitual $p$g que correspond
e a;
$p
$g
$l
$b
$q
$$
$t
$d
$v
$n
$h
$e

=
=
=
=
=
=
=
=
=
=
=
=

mostrar trajeto atual


mostrar o separador >
mostrar o separador <
mostrar o separador |
mostrar o separador =
mostrar o sinal $
mostrar a hora
mostrar a data
mostrar a verso do sistema
mostrar unidade atual
retroceso. Apaga o caracter previo
esc. Mostra o sinal corresponde a asci 27

Por isso se colocarmos prompt $p$g o cursor mostra a tragetria 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 parametros
Mostra a memoria usada e livre no sistema
/p -> mostra por programas
/d -> por programas econtroladores
/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 com
pleto 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 diretorio raz 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).
DEL arquivo(s)
Apagar arquivos selecionados
del
del
del
ma

lol.txt (apaga o arquivo lol.txt no diretrio atual)


c:\lol.txt (apaga o arquivo lol.txt que se encontra no c:\)
arquiv~1\*.*(apaga os arquivos que se encontram no diretrio
cujo nome curto arquiv~1( no se apaga as subpastas)

Arquivos de progra

DELTREE arquivo(s) -y
Apaga a raz especificada ( se um arquivo coloca o arquivo, se uma pasta coloca a
pasta com todas as subpastas que incluam).
Com o parametro -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 parametro /W mostra uma lista resumida
Se coloca como parametro /P mostra uma lista utilizando o filtro more.
ATTRIB arquivo(s)-> Mostra os arquivos dos diretrios indicados e nesse caso permi
te mud-los.
os atributos so:
H
R
S
A

->
->
->
->

oculto. Se ativa com +h e desativa com -h


Leitura. Apenas leitura com +r, normal com -r
Sistema. Se ativa com +s e desativa com -s
Modificado. Para copias de segurana incrementadas. +a indica modificado e -a

indica no modificado.
Attrib arquivostorm.txt (mostrar os atributos do arquivostorm.txt)
attrib *.exe +r +r +s (coloca todos os arquivos com extenso exe como ocultos, do
sistema e a apenas l)
RENAME o REN nome1 nome2
Mudar o nome do arquivo
Ren nome1.txt nome2.txt
TYPE arquiivo
Mostra por pasta o contedo do arquivo;
type nomedoarquivo.txt
* Todos aqui listados so comandos de MS-DOS que foram criados especificamente par
a arquivos de lote. Se voc precisar de mais detalhes sobre cada um deles basta di
gitar 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 es
te sistema.
Comandos para programao
EDIT arquivo
Editor de textos utilizado para editar scripts e arquivos de texto.
DEBUG arquivo parametros de arquivo
Inicia o desassembler com o programa indicado que se colocam por parametros.
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 opao snc
CODE
if errorlevel 1 goto
if errorlevel 2 goto
if errorlevel 3 goto
Este exemplo mostra a lateral eleja uma opo e da a elejer s (sim), n (no) o C (conti
nuar) por exemplo as tres seguintes linhas especificam aonde deve sair o fluxo d
o programa seguido da tecla pulsada.
Variveis
A condio DEFINED verifica se uma varivel j foi definida. Por exemplo, se a varivel
tiver 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
ue 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 )
X igual a 6?
@ECHO OFF
CLS
SET X=6
IF %X% == 6? GOTO ok
ECHO X no igual a 6, X igua a %X%
GOTO saida
:o k
ECHO X igual a 6
:saida

Na primeira linha. O @ indica que no para aparecer o comando que segue, no caso, ECH
O (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 computado
r falar , ECHO OFF faz o computador desligar a boca e com o @ no comeo da linha, ele n
em 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 igu
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 l
inha, nada mais que isso, ento o MS-DOS entende que o batch concluiu.
Faa o teste
1.
2.
3.
4.
5.
um
6.

Abra o Bloco de notas do Windows;


Copie o exemplo acima e cole nele
Salva-o como exemplo2.bat;
D dois-clicks nele observe o que acontecer;
Agora experimente modificar a segunda linha por SET idade=n (troque n por alg
nmero);
Execute e veja o que acontece.

Programando;
Existe uma infinidade de comandos, como mostrei acima, e s usar a imaginao e podemo
s programar uma imensido de finalidades, basta usar a criatividade e alguns coman
dos, para fechar esse tutorial, vou abordar alguns cdigos feito por mim.
Exemplo 1 (Bsico)
-fazer um loop que pegue todos os nomes dos diretorios

-dentro de cada diretorio, renomear todos os arquivos com a extenso .txt para .zi
p
CODE
@echo off
rem *.txt *.zip
@exit
Exemplo 2 (Intermedirio/Avanado)
CODE
@echo off
cls
Echo Batch feito por Storm
Echo .
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
p1 reg add hklm\Software\Microsoft\Windows\CurrentVersion\Run
/d c:\path\batstorm.bat&goto proximo

/v teste2 /t REG_SZ

p2 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 batstorm.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
p3 call batstorm.bat&goto proximo2

p4 exit