Sei sulla pagina 1di 17

3/7/2014 Tutorial Batch (Todos os niveis)

Tutorial Batch (Todos os niveis)


Ol galera! Ha uma semana estava fazendo este tpico e finalmente chegou a hora de postar!

Tutorial de programao em Batch (todos os nveis)

Contedo

1. Introduo
2. Variveis
2.1. Recortar uma Varivel
3. Looping
4. Comando IF
5. Comandos bsicos
6. Shutdown
7. Call
8. Parmetros
9. Shift
10. Attrib
11. Re-direcionadores
12. Manejo do Registro (Cuidado usando mal o regedit pode provocar at o colapso do sistema)
12.1. Adicionar chave ao registro
12.2. Apagar chave do registro
12.3. Consultar chave do registro
12.4. Exportar arquivo .reg de uma chave
12.5. Importar um arquivo .reg ao registro
12.6. Comparar duas chaves do registro
13. errorlevel
14.AT
15.SUBST
16.ASSOC
17.CACLS
18.Setlocal e Endlocal
19. FOR
20. Comprimir e Descomprimir arquivos se tivermos o Winrar instalado
20.1. Para comprimir arquivos
20.2. Para descomprimir arquivos
21.modificar tamanho do console
21. modificar tamanho do console
22. Ativar ou desativar o firewall do Windows
23. Tabelas
24. Comandos de rede
25. Fazer com que o bat espere um tempo

1. Introduo
Batch uma linguagem scripting, e para sua utilizao utilizamos o console do Sistema do Windows (DOS).
As linguagens do tipo scripting, utilizamos para escrevermos script
Scripts so utilizados para automatizar tarefas.
Para iniciarmos no mundo batch somente necessitaremos umprograma o bloco de Notas, ou qualquer outro
que edite arquivos de texto, (por favor, no usar o Word, nem similares) um muito bom tambm o
notepad++ ou editpad que o mesmo que uso.
Antes de iniciarmos a criao dos nossos scripts vamos aprender a utilizar o console, este vai ser o que
interpretar os cdigos que digitaremos.
Para abrir o console vamos ao Menu iniciar>executar (ou use a tecla do logotipo do Windows + r), ali
escreveremos cmd.exe e depois Enter.
Foi aberta uma janela negra, com um sublinhado piscando este o cursor, a direita do cursor temos o
Prompt:

C:\Documents and Settings\Administrator>_

O Prompt nos mostra onde estamos localizados virtualmente, o que vemos um caminho e um >, o > nos diz que
terminou o caminho e comea a ordem que ns escreveremos.
O caminho esta composto por [unidade]:\diretrio\...
http://www.webcheats.com.br/forum/outras-linguagens/1035350-tutorial-batch-todos-os-niveis.html 1/17
3/7/2014 Tutorial Batch (Todos os niveis)

Os dois pontos dizem que o anterior a unidade de disco, no meu caso C e o que segue so os diretrios
delimitados por uma barra invertida \ no confunda com /.
As ordens que ingressarmos ao console, estaro compostos do seguinte maneira
[Comando] [Parmetros]
Agora vamos fazer que abaixo do Prompt seja escrita uma linha que diga Web Cheats, para fazer isso
escreveremos:

echo Web Cheats

Neste caso echo o comando e Web Cheats so os parmetros (seriam dois parmetros, os parmetros
so delimitados por espao, um espao indica onde termina um parmetro e comea outro)
O comando Echo mostra um texto e tambm oculta a visualizao do Prompt.
Para ocultar o Prompt escreveremos echo off , para visualizar echo on.
Para deixar uma regio em branco escreveremos echo. (sem aspas)
Para obter a ajuda de um comando, escreveremos
Comando /?
H dois tipos de comandos os internos e os externos, os internos so todos os comandos que vm integrados
com o console e os externos so arquivos que funcionam como comandos.
Para obter a lista dos comandos internos, escreveremos o comando Help.
Agora com toda esta teoria, comeamos a criar nossos scripts.
Vamos ao bloco de Notas, e escreveremos o seguinte:

echo Web Cheats


pause

E salvamos como *. bat, onde est * vai ser o nome do arquivo que queremos [assim que se salva um script
batch].
Depois buscamos o arquivo.bat e lhe damos duplo click.
E foi aberto o console dizendo Web Cheats, e abaixo pressione uma tecla para continuar., ao
pressionarmos uma tecla termina a janela.
O comando Pause serve para inserirmos uma pausa, e no deixar que continue o script, se no estivesse o
script se fecharia, pois no existiriam mais ordens abaixo o script finaliza. Esta foi uma demonstrao de
um script. Agora voltemos ao console.
Para mover-nos entre os diretrios usaremos o comando cd
Ex.:
Ir a uma pasta anterior usa-se: cd..
Ir ao disco raiz usamos: cd\
Ir a uma pasta dentro do que estamos usamos: cd pasta
Ir a um caminho especifico usamos: cd Disco:\diretrio\Subdiretrios

Para listar diretrios usamos o comando dir, para ver os parmetros escrevemos no console dir/? E nos Dara
a ajuda deste comando.
Por exemplo, para ver os arquivos que temos no desktop primeiro vamos ao desktop
Usamos cd desktop e depois escrevemos dir /a

2. Variveis
Para ver todas as Variveis usamos o comando set
Se escrevermos set e depois Enter veremos todas as Variveis.
Estas so as Variveis mais usadas:

%ALLUSERSPROFILE% C:\Documents and Settings\All Users


(caminho da pasta com a configurao para todos os usurios)
%APPDATA% C:\Documents and Settings\ {usurio} \Dados de aplicativos
(caminho da pasta com Dados de aplicativos)
%COMPUTERNAME% nome do equipamento
(nome do equipamento)
%COMSPEC% C:\Windows\System32\cmd.exe
(caminho do interpretador de comandos)
%HOMEDRIVE% unidade onde esto os dados do usurio (C:)
(unidade onde se encontram os dados de usurio)
%HOMEPATH% \Documents and Settings\{usurio}
http://www.webcheats.com.br/forum/outras-linguagens/1035350-tutorial-batch-todos-os-niveis.html 2/17
3/7/2014 Tutorial Batch (Todos os niveis)

(caminho a pasta do usurio atual)


%USERPROFILE% C:\Documents and Settings\{usurio}
(Incluindo unidade)
%PATH% C:\Windows\System32\;C:\Windows\
(caminhos onde se buscam executveis)
%PATHEXT%%%%. COM; .EXE; .BAT; .CMD; .VBS; .VBE; .JS ; .WSF; .WSH;
(extenses de arquivo executveis)
%PROGRAMFILES% C:\arquivos de programa
(caminho da pasta arquivos de programa)
%PROMPT% $P$G
(Formato do interpretador de comandos)
%SYSTEMDRIVE% C:
(unidade onde est instalado Windows)
%SYSTEMROOT% e %WINDIR% C:\Windows
(contem a pasta do Windows)
%TEMP% e %TMP% C:\DOCUME~1\{usurio}\LOCALS~1\Temp
(caminho da pasta Temp)
%USERNAME% Ex. Computer
(nome de usurio atual)
%DATE% 19/11/2010
(data atual)
%TIME% 00:00:00,00
(Hora atual)
%CD% C:\
(pasta atual com seu caminho completo)
%errorlevel% 0 ou 1
(Cdigo de sada do comando anterior)
%RANDOM% 32767
(Nmero aleatrio de 0 a 32767)

As Variveis nos servem para indicar um valor que pode ser um numero um caminho ou o que queremos, onde
escrevemos a varivel estamos escrevendo na realidade o valor da Varivel.
A varivel se escreve com %% exemplo para indicar a varivel homepath escreveremos %homepath%.
Por exemplo, podemos listar o contedo do desktop sem estar nele, usando:
Dir /a "%homedrive%%homepath%\desktop", por precauo sempre que nos referimos a um caminho
usaremos aspas duplas "".
Para definir uma varivel fazemos
Set Vari_vel=valor
Vari_vel o nome da nossa varivel e em valor o que queremos que seja a Varivel
No bat para que na varivel o usurio defina o valor fazemos:

Set /p Varivel=

No h valor porque o valor ou usurio quem define


Para definir Variveis com resultados de somas subtraes multiplicaes divises
Usamos o /a depois de set
Ex.:

Set /a Varivel=numero+numero
Set /a Varivel=numero-numero

Tambm se uma varivel um valor numrico podemos trabalhar com ela, por exemplo,

Set /a Varivel=%random%*%random%

Na linguagem Batch no temos suporte para restos, se fazemos 3/2 no nos Dara 1.5 e sim 1 (arredonda para
abaixo)
Para mais informao sobre Variveis set?

http://www.webcheats.com.br/forum/outras-linguagens/1035350-tutorial-batch-todos-os-niveis.html 3/17
3/7/2014 Tutorial Batch (Todos os niveis)

2.1. Recortar uma Varivel


Podemos tomar algo de uma varivel, por exemplo:
H uma variante chamada original e seu valor abcdefghijk
Se quisermos somente obter as letras fghi, temos que ver quantas letras
H antes do f neste caso seriam 5 (abcde) e quantos caracteres ocupa
O que queremos ver neste caso seriam 4 (fghi).

%nomevariante:~numerosdecaracteresanteriores,numer osdecaracteresquequeremosver%

No exemplo anterior seria 5,4 (nos mostraria somente fghi)

%original:~5,4%

Agora queremos mostrar a partir do c em diante

%original:~2%

Agora queremos mostrar os ltimos 3 caracteres

%original:~-3%

Agora queremos mostrar tudo menos os ltimos trs caracteres

%original:~0,-3%

Para fazer o sinal estando no cmd, fazemos com alt+126

3. looping
Um loop ou ciclo de repetio, em programao, uma seqncia que se realiza repetidas vezes a algo
dentro do cdigo, at que a condio designada ao looping deixe de existir.

Vejamos como se usam os looping:


Voltemos ao bloco de notas e escrevemos

@echo off
:ini
Echo este um looping
Goto :ini

E salvamos como j dissemos.


Viro como apareceu vrias vezes o este um looping sendo que foi escrito uma s vez,
Este o looping.
Ao escrever

:looping

Referimos-nos que ali um ponto de partida e ao colocar onde quisermos Goto: looping o que fazemos
voltar ao ponto de partida, claro que algo assim no looping no terminara nunca e teremos que fechar o
console a mo.
Analisemos:

@echo off:
@ faz com que o comando atual no tenha eco, o eco dizemos que aparea o Prompt, e o echo off desativa o

http://www.webcheats.com.br/forum/outras-linguagens/1035350-tutorial-batch-todos-os-niveis.html 4/17
3/7/2014 Tutorial Batch (Todos os niveis)

eco, ou seja, nunca veremos o Prompt a menos que escrevemos echo on.

4. Comando IF
O comando IF diz que se algo ocorrer, em conseqncia faa algumas coisas ou se algo no ocorrer que faa
outras coisas.
Vejamos:

IF valor==valor (echo Coincide) else (echo no coincide)

Isto nos diz que se valor igual a valor escreva coincide caso contrario escreva no coincide.
Com isso podemos comparar Variveis e valores Ex.:

IF %homedrive%==C: (echo Disco local C) else (echo o disco local diferente de C)

Podemos comparar se uma varivel igual outra podemos comparar se maior, menor, maior ou igual menor
ou igual, diferente.

EQU - igual
NEQ - no igual
LSS - menor que
LEQ - menor que ou igual
GTR - maior que
GEQ - maior que ou igual

Ex.:

IF 4 gtr 5 (echo Calculo impossvel) else (echo 4 no maior que 5)

Ao invs de usar um comando na condio podemos usar vrios:

IF 5 lss 7 (Echo 5 menor que 7


Echo 7 maior que 5
Pause
) else (
Echo.
)

Exemplo cdigo integrando IF e set:

@echo off
Echo 2 mais quanto igual 5? [escreva somente o numero]
Set /p rta=
Set /a soma=2+%rta%
IF %soma%==5 (echo correto)
Pause
Exit

Na condio podemos remover a parte do else (), se no queremos que passe nada que contradiga a condio.
Ao usar o IF, podemos indicar se a varivel x esta definida ou no, e seguindo isso poder realizar diversas
aes, vejamos alguns exemplos:
Para indicar se x esta definida que escreva correto caso contrario que escreva incorreto

IF defined x (echo correto) else (echo incorreto)

http://www.webcheats.com.br/forum/outras-linguagens/1035350-tutorial-batch-todos-os-niveis.html 5/17
3/7/2014 Tutorial Batch (Todos os niveis)

Para indicar se x no esta definida que escreva incorreto caso contrario que escreva correto

IF not defined x (echo incorreto) else (echo correto)

Podemos verificar a existncia de um arquivo no diretrio

IF exist "%windir%" (echo existe) else (echo no existe)

Podemos tambm verificar a inexistncia de um arquivo no diretrio

IF not exist "C:\musica. mp3" (echo no existe) else (echo existe)

Criaremos um menu com IF, set e Goto

@echo off
Echo Menu
Echo.
Echo 1. Escreva a palavra batch
Echo 2. O que isso?
Echo 3. Sair
Echo pressione o numero da opo e depois enter
Set /p opc=
If %opc%==1 (goto:escreva)
If %opc%==2 (goto:queisso)
If %opc%==3 (exit)
:escreva
Echo Batch
Pause
Exit
:queisso
Echo -esta- uma palavra
Pause
Exit

Algum j se perguntou para que serve exit, serve para terminar o console do cmd limpar as variveis etc.

5.Comandos bsicos
Para explorar cada comando usamos o nome do comando seguido por /?

Cls - limpa a tela


Type caminhoarquivo escreva na tela um arquivo
DO caminhoarquivo limpa um arquivo
Copy caminhoorigem caminhofinal Copia um arquivo
Move caminhoorigem caminhofinal Copia um arquivo
Ren caminhoorigem novonome renomear um arquivo
Title novo titulo muda o titulo do console
Md caminho diretrio cria uma pasta
Rd caminho diretrio - limpa uma pasta
Tasklist Lista os processos atuais
Taskkill /f /im processo.extenso termina um processo
Taskkill /pid numerodepid termina um processo indicando o numero de pid
Fc caminhoarquivo1 caminhoarquivo2 Compara dois arquivos
Find cadeiadetexto caminhoarquivo Busca em um arquivo uma cadeia de texto
Findstr cadeiadetexto caminhoarquivo Busca uma cadeia em vrios diretrios
Format formata uma unidade
Start Inicia uma aplicao

http://www.webcheats.com.br/forum/outras-linguagens/1035350-tutorial-batch-todos-os-niveis.html 6/17
3/7/2014 Tutorial Batch (Todos os niveis)

6.Shutdown
Com o shutdown podemos apagar, reiniciar e anular um equipamento em uma quantidade de segundos
Para apagar o equipamento em 30 segundos: Shutdown s t 30
Para reiniciar: Shutdown r
Para anular: Shutdown a
Para forar o fechamento de aplicativos sem advertir usamos f
Exemplo de reinicio forando o fechamento de aplicativos, em 5 segundos com um comentrio

Shutdown r f t 5 c "comentrio"

7.Call
Usa-se para chamar um arquivo de lotes externo ou alguma parte do arquivo de lotes atual
Ex.: Call caminho do arquivo de lote
Para chamar a uma parte do arquivo
Ex.: Call :looping
Podemos Adicionar parmetros colocando depois do que queremos chamar ex: call:looping 123
Aqui enviamos com o looping o parmetro de valor 123.

8.Parmetros
Um parmetro um tipo de varivel que recebida por uma funo, procedimento ou sub-rotina.
Os parmetros podem ser de fabrica ou podemos colocar ns mesmos.
Por exemplo:

Call "arquivo.bat" abcdef

Neste exemplo ao abrir o arquivo se iniciara com um parmetro com valor abcdef.
O bat que abrir pode comprovar se est sem parmetro em sua execuo e seguir ou executar algo com o
IF.
Por exemplo:
Nas primeiras linhas de arquivo.bat escreveremos este fragmento de cdigo:

Set var=%1
IF %var%==abcdef (echo o parmetro abcdef foi recebido corretamente)

O parmetro %0 o prprio bat, este est definido e predeterminado, ou seja, se o arquivo bat estiver no
disco c, o parmetro %0 ser C:\arquivo.bat
Agora enviaremos a :ini um caminho como parmetro

Call:ini "%homedrive%%homepath%\desktop\arquivo.bat"
pause
:ini
Echo %~f1 file
Echo %~p1 path
Echo %~n1 name
Echo %~x1 xtencion
Echo %~s1 single
Echo %~a1 atribute
Echo %~t1 time
Echo %~z1 zone
Goto:eof

O Goto:eof se usa para terminar a funo

%~f1 - retorna o caminho e o arquivo de %1.


%~d1 - retorna a letra da unidade de %1.
%~p1 - retorna somente o caminho do arquivo %1.
%~n1 - retorna somente o nome de arquivo %1.

http://www.webcheats.com.br/forum/outras-linguagens/1035350-tutorial-batch-todos-os-niveis.html 7/17
3/7/2014 Tutorial Batch (Todos os niveis)

%~x1 - retorna somente a extenso do arquivo %1.


%~s1 - retorna somente o caminho, com diretrios, com nomes curtos do arquivo %1.
%~a1 - retorna os atributos do arquivo.
%~t1 - retorna a hora/data do arquivo %1
%~z1 - retorna o tamanho do arquivo %1.

9.Shift
Muda a posio dos parmetros.
Por exemplo se tivermos o parmetros: a [%1], b [%2], c [%3], d [%4], e [%5], f [%6]

Shift /1

Os parmetros mudam: b [%1], c [%2], d [%3], e [%4], f [%5]

Shift /2

Os parmetros mudam: a [%1], c [%2], d [%3], e [%4], f [%5]

Para entender melhor como Apagar o parmetro do modificador e reagrupar os nmeros dos parmetros
Segundo sua ordem.

10.Attrib
Muda ou mostra os atributos do arquivo
Para mostrar usamos:
Attrib arquivo
Para modificarmos adc + adicionamos atributos e com o - removemos.
R Atributo de somente leitura do arquivo.
A Atributo de arquivo de armazenamento.
S Atributo de arquivos do sistema.
H Atributo de arquivo oculto.
Por exemplo, para ocultar um arquivo e dar lhe atributos de sistema fazemos:

Attrib +h +s "arquivo"

E para voltar velo fazemos:

Attrib -h "arquivo"

11.Redirecionadores
Para escrever um arquivo de texto que diga abc fazemos:

Echo abc > "caminhodoarquivotxt.txt"

Para Adicionar outra linha ao arquivo sem sobre escrever fazemos:

Echo def >> "caminhodoarquivotxt.txt"

Podemos tambm ocultar a sada de um comando com uma re-direo


Ex.:

Ping n 1 localhost>nul

O >nul se usa para ocultar o texto de sada


http://www.webcheats.com.br/forum/outras-linguagens/1035350-tutorial-batch-todos-os-niveis.html 8/17
3/7/2014 Tutorial Batch (Todos os niveis)

Tambm podemos redirecionar a uma impressora com >prn


Para redirecionar a uma porta paralela PRN, LPT1, LPT2, LPT3, para redirecionar a uma porta serial COM1,
COM2, COM3, etc.

12.Manejo do Registro (Cuidado ao usar esses comandos)


Isso til se queremos Adicionar um programa ao iniciar do nosso sistema incluindo o prprio bat, ou fazer
mudanas sem necessidade de entrar no regedit.

12.1.Adicionar chave ao registro

Reg add "chave" /v "nome ou valor da entrada" /t "tipo de entrada" /d "dados da entrada"

Os tipos de entradas so:

REG_SZ
REG_MULTI_SZ
REG_DWORD_BIG_ENDIA N
REG_DWORD
REG_BINARY
REG_DWORD_LITTLE_EN DIAN
REG_NONE
REG_EXPAND_SZ ]

exemplo:

reg add "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Cur rentVersion\Run" /v


"exemplo" /t reg_sz /d "C:\exemplo.bat"

12.2.Apagar chave do registro

Reg delete "chave" /v "nome da entrada" /f (executa sem pedir confirmao)

exemplo:

reg delete "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Cur rentVersion\Run"


/v "exemplo" /f

Se quisermos sobrescrever uma entrada j existente, fazemos como se adicionssemos uma nova chave porem
colocamos o parmetro /f que no pede confirmao.

12.3.Consultar chave do registro

Reg query "chave" /v "nome da entrada"

Podemos usar os modificadores [/ve] [/s]


/ve Consultar o valor de fabrica
/s Consulta sub chaves e valores
Ex.:

reg query "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Cur rentVersion\Run"

Consultarmos a chave "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Cur rentVersion\Run"

http://www.webcheats.com.br/forum/outras-linguagens/1035350-tutorial-batch-todos-os-niveis.html 9/17
3/7/2014 Tutorial Batch (Todos os niveis)

12.4.Exportar arquivo .reg de uma chave

Reg export "chave" arquivo pra onde se exportara o .reg

Ex.:

reg export "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Cur rentVersion\Run"


"%homedrive%%homepath%\desktop\HKLMRun.reg"

No seu desktop ser criado o arquivo HKLMRun.reg com os valores da chave


"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Cur rentVersion\Run"

12.5.Importar um arquivo .reg ao registro

Reg import arquivo.reg

Ex.:

reg import %homedrive%%homepath%\desktop\HKLMRun.reg

Ser importado o arquivo HKLMRun.reg do desktop ao registro.

12.6.Comparar duas chaves do registro

Reg compare "chave1" chave2

Podemos Adicionar os modificadores


/v nome da entrada Para comparar uma entrada especifica
/ve Para comparar o valor de fabrica
Ex.:

reg compare "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Cur rentVersion\Run"


"HKEY_CURRENT_USER\Software\Microsoft\Windows\Curr entVersion\Run"

Compara os valores das chaves de HKLM com HKCU

13.errorlevel
A varivel errorlevel muito til para saber se algum comando no foi executado, no caso de existir erros
ao processar um comando, errorlevel ser 1 se ocorrer tudo bem o errorlevel ser 0, ao no encontrar o
comando o errorlevel ser 9009.
Ex.:

Abcdef
Echo %errorlevel%
Pause

Aqui nos Dara um errorlevel de 9009 j que abcdef no um comando, a menos que tenhamos um comando
chamado abcdef.
Ex:

Cd "C:\abcdef"

http://www.webcheats.com.br/forum/outras-linguagens/1035350-tutorial-batch-todos-os-niveis.html 10/17
3/7/2014 Tutorial Batch (Todos os niveis)

Echo %errorlevel%

Errorlevel nos retornar 1 a menos que tenhamos uma pasta no c chamada abcdef, se tivermos o errorlevel
ser 0.

14.AT
At serve para criar tarefas programadas:
At hh:mm processo.exe
At hh:mm /Interactive processo.exe
Ao usar o /Interactive permite a interao com o usurio, se no se utilizar o /Interactive se executaria o
processo porem em segundo plano.
Para Apagar uma tarefa programada fazemos
At numerodatarefa /delete
O numero da tarefa colocamos o numero identificador da tarefa, que nos da o cmd quando criamos a tarefa.
Tudo que for executado no at, sair do usurio system e que nos d uma escala em privilgios.

15.SUBST
Atribui uma letra a um caminho
Subst W: %homedrive%%homepath%\desktop
Aqui criamos um disco W para acesso no caminho %homedrive%%homepath%\desktop
Para Apagar esta unidade virtual usamos
Subst W: /D
16.ASSOC
Mostra ou modifica as associaes de extenses de arquivos, para mostrar usa-se somente assoc para
modificar usa-se Assoc .extenso=tipodearquivo
Ex.: assoc .txt=batfile
Assim os arquivos bat sero vistos como arquivos de texto.

17.CACLS
Mostra ou modifica o acesso dos usurios sobre os diretrios ou arquivos.
Para denegar o acesso a um usurio neste caso nosso usurio atual

Cacls "diretrioarquivo" /e /d %username%

Para permitir o acesso a um usurio neste caso nosso usurio atual

Cacls "diretrioarquivo" /e /g %username%:f

Para denegar o acesso a todos os usurios

Cacls "diretrioarquivo" /e /d todos

Para permitir o acesso a todos os usurios

Cacls "diretrioarquivo" /e /g todos:f

18.Setlocal e Endlocal
Setlocal indica que estamos a ponto de realizar algumas mudanas nas Variveis de ambiente no script se
deve manter-se no contexto atual, ao usar setlocal as Variveis ficam como esto atualmente por mais que se
modifique, depois do setlocal nas Variveis se usa endlocal, dai as Variveis voltam como estavam antes.
Ex.:

Set x=abcdef
Setlocal
Set x=xsakxal
Echo %x%
Endlocal
http://www.webcheats.com.br/forum/outras-linguagens/1035350-tutorial-batch-todos-os-niveis.html 11/17
3/7/2014 Tutorial Batch (Todos os niveis)

Echo %x%
Pause

A varivel x ser modificada estando dentro do setlocal, porem com endlocal ela volta ao normal.
Ao invs setlocal admite modificadores
ENABLEEXTENSIONS / DISABLEEXTENSIONS
Habilita ou desabilita as extenses.
Por exemplo

Setlocal ENABLEEXTENSIONS
Echo errorlevel ser definida se as extenses estiverem habilitadas
Echo %errorlevel%
Endlocal
Pause

No exemplo errorlevel nos deu 0, porque echo no deu erro e estava definido porque foram habilitadas as
extenses.
Outro exemplo

Setlocal DISABLEEXTENSIONS
Echo errorlevel no ser definido porque as extenses esto desabilitadas
Echo %errorlevel%
Endlocal
Pause

Neste exemplo errorlevel no esta definido, porque as extenses esto desabilitadas.


Tambm suporta os modificadores
ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION
Este ser explicado junto com for.

19.FOR
O for um dos comandos, mais complexos e de maior uso.
Comeamos: [Nota: estando no console usaremos %a porem estando em um bat usaremos %%a]

For /l %%a in (1,1,8) do (echo repete esta 8 vezes)

Neste cdigo observamos que com o modificador, /l indicamos que vai existir uma seqncia de nmeros na
parte "in ()", em "in" teremos numero inicial, o passo, numero final no exemplo acima contar de 1 em 1
comeando de 1 at 8, se tivesse sido 1,2,8 o "for" contaria de 2 em 2 comeando de 1 at 8.
Para cada vez ou cada numero que contar ser executado o cdigo que esta no "do" por isso no exemplo se
repete 8 vezes a frase.
Ao contrario a varivel %%a ter o valor do numero que estamos contando.
Ex.

For /l %%a in (1,1,10) do (echo %%a)

Aqui contara at 10 e retornar os nmeros do 1 aos 10.


O %%a pode substitudo por %%b ou %%ocaracterquequizermos

For /f %%a in ('type arquivo.txt') do (echo %%a)

Quando usamos o modificador /f indicamos que devolva o comando de dentro do "in", e este ser aplicado
no "do".
O comando de dentro do "in" se delimita com aspas simples ' '.
Ao escrever as linhas o "do" escrevera na tela o arquivo arquivo.txt dividido por linhas.
Pois o type receber a linha e o echo a escrevera.
http://www.webcheats.com.br/forum/outras-linguagens/1035350-tutorial-batch-todos-os-niveis.html 12/17
3/7/2014 Tutorial Batch (Todos os niveis)

Com o modificador /f podemos usar:


Delims especifica um grupo de delimitadores
Skip pula a quantidade de linhas que indicarmos
Tokens o texto extrado mostra as colunas que indicarmos
Vejamos exemplos:

For /f "Delims=" ('type arquivo.txt') do (echo %%a)

Aqui escrevera o arquivo.txt por linhas, a diferena do cdigo anterior que teramos erros nas linhas do
arquivo pois iriam ser cortadas.

For /f "Skip=3" ('type arquivo.txt') do (echo %%a)

Pula as primeiras 3 linhas do arquivo

For /f "Tokens=2,4" ('Tasklist') do (echo %%a)

O Tasklist nos escrevera as colunas 2 e 4, ou seja o pid e o uso de memria

For %%a in (a b c) do (echo %%a)

Aqui nos escrevera as letras a b c, isso significa que passar pelo "do" com a letra a na varivel %%a depois
passar de volta ao "do" porem Agora a varivel %%a valer b e depois quando passe novamente pelo "do"
%%a ser c.
No for no podemos salvar uma varivel que muda, por isso no inicio do arquivo escreveremos setlocal
enabledelayedextension.
Isto habilitara a expansion de Variveis retardada.
Desta maneira podemos salvar Variveis no for, no da forma %Varivel% e sim !Varivel!
Ex.:

Set n=0
For /f "Skip=4 Tokens=1" %%a in ('type arquivo.txt') do (set /a n=!n!+1)

Para saber quantas vezes passaram pelo "do" as linhas do arquivo ficar armazenadas na varivel n o numero
de linhas do arquivo.txt
Se quisermos colocar um for dentro de outro, no devemos usar as mesmas Variveis do tipo %%x. Um
exemplo correto de for dentro de for seria:

For /l %%a in (1,1,5) do (For /l %%b in (1,1,8) do (Echo %%a-%%b))

20.Comprimir e Descomprimir arquivos se tivermos o Winrar instalado

20.1.Para comprimir arquivos

Start winrar.exe a "\caminho1\caminhox\arquivo.rar" "\caminho1\caminhox\arquivo.txt"


A se usa para indicar que vamos comprimir
-ibck se usa para indicar que a ao vai ser executada em modo background
-p(seguido do texto, sem parntesis) se usa para colocar-se senha no rar
-ep1 se usa para excluir todos os diretrios que contem nesse arquivo
-df se usa para eliminar os arquivos depois da compresso
Ex:

Start Winrar.exe a -ep1 "\Documents and


Settings\Administrador\desktop\arquivoscomprimido. rar" "\Documents and

http://www.webcheats.com.br/forum/outras-linguagens/1035350-tutorial-batch-todos-os-niveis.html 13/17
3/7/2014 Tutorial Batch (Todos os niveis)

Settings\Administrador\desktop\arquivoqueseracompr imido.*"
start winrar.exe a -ep1 "\Documents and Settings\Administrador\desktop\Boss.rar"
"\Documents and Settings\Administrador\desktop\Oi.txt" -ibck
start winrar.exe a -ep1 -pcasa -df "\Documents and
Settings\Administrador\desktop\Boss.rar" "\Documents and
Settings\Administrador\desktop\Oi.txt"

-ibck (Neste ultimo exemplo a senha seria a palavra casa e sero eliminados os arquivos depois da
compresso)

20.2.Para descomprimir arquivos


Start winrar.exe x "\caminho1\caminhox\arquivo.rar" "\caminho1\caminhox"
x se usa para indicar que vamos descomprimir
Ex:

Start Winrar.exe x "\Documents and Settings\Administrador\desktop\arquivoscomprimido.


rar"
"\Documents and Settings\Administrador\desktop"
start winrar.exe x "\Documents and Settings\Administrador\desktop\Boss.rar"
"\Documents and Settings\Administrador\desktop" -ibck
start winrar.exe x -pcasa "\Documents and Settings\Administrador\desktop\Boss.rar"
"\Documents and Settings\Administrador\desktop" -ibck

(Neste ultimo exemplo descomprimiria usando a senha casa)

[todos os comandos do Winrar esto na pasta do programa, no arquivo rar.txt]

21.modificar tamanho do console


Podemos modificar o tamanho do console desta maneira:

MODE CON: COLS="quantidadecolunas" LINES="quantidadelinhas"

Em quantidade de colunas, colocamos a quantidade de colunas (sem aspas) e em quantidade de linhas


colocamos a quantidade de linhas (sem aspas)
Ex.:

Mode con: cols=50 lines=25

Ps.: o tamanho de uma clula de 12 x 8 pixels, um quadrado seria por exemplo:

mode con: cols=48 lines=32

22.Ativar ou desativar firewall do Windows


Para Ativar

netsh firewall set opmode enable

Para desativar

netsh firewall set opmode disable

Netsh nos oferece varias opes para configurao de uma rede.


Para mais informao netsh/?

http://www.webcheats.com.br/forum/outras-linguagens/1035350-tutorial-batch-todos-os-niveis.html 14/17
3/7/2014 Tutorial Batch (Todos os niveis)

23.Tabelas
Modelos de Tabelas:

Modelo 1

Echo
Echo
Echo
Echo

Modelo 2

Echo
Echo
Echo
Echo
Echo

Modelo 3

Echo
Echo
Echo
Echo
Echo
Echo
Echo

Modelo 4

Echo
Echo
echo
echo
echo

24.Comandos de Rede
FTP
Iniciar o cliente FTP
IPCONFIG parmetros
Mostrar as caractersticas de configurao de IP
/all -> mostra toda a informao de configurao
/release adaptador -> libera o ip do adaptador especificado
/renew adaptador -> renova o ip para o adaptador especificado
/flushdns -> purga o cach de resoluo de dns
/registerdns -> atualiza as conexes dhcp e volta a registrar os nomes dns
/displaydns -> mostra o contedo do cach de resoluo dns
Netstat
Comando para verificar o estado atual da rede
Netstat -a Mostrar todos os pontos e conexes
Netstat -n Mostrar nmero de porta e caminhos
Netstat -r Mostrar a tabela de caminhos
Netstat -s Mostrar estatsticas por protocolo
Netstat -p tcp/udp Mostrar as conexes ativas TCP ou UDP
Nslookup
Utilizado para interpretar o dns
Ping
Enviar pacotes icmp a um determinado destino.

http://www.webcheats.com.br/forum/outras-linguagens/1035350-tutorial-batch-todos-os-niveis.html 15/17
3/7/2014 Tutorial Batch (Todos os niveis)

ping -t ping ao host at que se pare


ping -a resolver caminhos em nomes de host
ping -n numero Nmero de parties a enviar
ping -l tamanho tamanho do buffer
Telnet
Inicia uma sesso Telnet ao host especificado na porta especificada.
se a porta for omitida se usa a 23 por default.
Tracert
Traar o destino at chegar ao caminho indicado.

25.fazer com que o bat espere um tempo


Podemos fazer de varias formas:
Podemos fazer um ping a localhost e no numero de parties a enviar colocamos os segundos de espera.
Ex:

Ping -n 1 localhost>nul

Espera um segundo e oculta o texto que aparece ao executar ping com o ">nul".

Ping -n 5 127.0.0.1>nul

Espera 5 segundos e oculta o texto que aparece ao executar ping com o ">nul".
Podemos colocar 127.0.0.1 ou localhost que o mesmo.
Localhost nosso PC, se estivermos sem conexo funciona melhor que 127.0.0.1.
Podemos criar um comando que executa ou espera.
ex:

@echo off
setlocal
If x%1x==xx (Goto: ajuda)
set tempo=%1
call:verif >nul 2>&1
goto:veriff
:verif
set /a ver=0x%tempo%
goto:eof
:veriff
If %errorlevel% neq 0 (Goto: ajuda)
call: code %tempo% >nul 2>&1
endlocal
goto:eof

:code
set /a tempoterm=%time:~0,2%*3600+%time:~3,2%*60+%time:~6 ,2%+%tempo%
set /a hs=%tempoterm%/86399
set d=%date:~0,2%
:ini
set /a tempoact=%time:~0,2%*3600+%time:~3,2%*60+%time:~6, 2%
if %d% neq %date:~0,2% (
set /a tempoterm=%hs%*-86399+%tempoterm%
set d=%date:~0,2%
if %hs% leq 0 (set /a hs-=1))
if %tempoterm% geq %tempoact% (goto :ini)
goto:eof

:ajuda
echo %~nx0 Insere uma pausa de n segundos
echo Criado por Carlos
echo.
echo Sintaxe:
echo %~nx0 Segundos
http://www.webcheats.com.br/forum/outras-linguagens/1035350-tutorial-batch-todos-os-niveis.html 16/17
3/7/2014 Tutorial Batch (Todos os niveis)

echo.
echo Ex.: %~nx0 777
goto:eof

Salvem como espera.bat em C:\Windows\System32


Para utilizar muito simples, colocamos no nosso cdigo:

Espera "quantidadedesegundos"

---------------------------------------------------------------------------

Bem galera! Isso s!

http://www.webcheats.com.br/forum/outras-linguagens/1035350-tutorial-batch-todos-os-niveis.html 17/17

Potrebbero piacerti anche