Você está na página 1de 13

Scripting (Batch)

Este documento é um conjunto de artigos criados em 2008 do site www.mcsesolution.com. Com a


migração para a nova plataforma não queria levar todos os artigos que já estavam se perdendo.
Resolvi então juntar esses artigos em documento e compartilhar com todos.

www.mcsesolution.com.br
Conteúdo
Características dos arquivos de lote ....................................................................................................... 3
Executando arquivos de lote. ............................................................................................................. 3
Características de scripts PowerShell ................................................................................................. 3
Echo on e Echo off .................................................................................................................................. 4
Comando REM ........................................................................................................................................ 5
Redirecionadores .................................................................................................................................... 5
Comando SET (Váriaveis de ambiente) ................................................................................................... 6
Comando If .............................................................................................................................................. 8
Caracteres Especiais ................................................................................................................................ 8
Comando GOTO ...................................................................................................................................... 9
Comando FOR ....................................................................................................................................... 10
Comando Choice ................................................................................................................................... 11
Comando Netsh .................................................................................................................................... 12

www.mcsesolution.com.br
Características dos arquivos de lote

Arquivos de lote (batch), são arquivos de texto não formatado, geralmente criados usando um editor
de texto simples, que poder ser o edit ou notepad do Windows.

A função de um arquivo de lote é automatizar tarefas. Um arquivo de lote é um conjunto de


comandos normais do DOS/Windows agrupados em um único arquivo de texto.

Os arquivos de lote, tem que possuir a extensão .BAT e em sistemas com NT, Windows 2000, 2003,
XP e 2008 podem também receber a extensão .CMD, iremos sempre usar aqui a extensão .BAT
(abreviação de BATCH) e que é compatível com quase todos os sistemas operacionais Microsoft.

Exemplo teste.bat, copiar.bat limpa.cmd

Executando arquivos de lote.

Uma vez que salvamos um arquivo com determinado nome (preferencialmente com 8 caracteres) e
com a extensão .bat ou .cmd

Podemos executá-lo a partir da linha de comando.

Para executar um arquivo de lote basta informar o nome do arquivo no prompt de comando. Se
você criar um arquivo com o nome "meuteste.bat", basta digitar no meuteste e pressionar ENTER.

Exemplo c:\>meuteste

Atenção - Para arquivos com o mesmo nome a ordem de execução é a seguinte: Primeiro arquivos
com extensão .com, segundo .exe e por ultimo .bat.

Exemplo: Se você tiver três arquivos com o mesmo nome (teste.com, teste.exe e teste.bat), primeiro
executaria o teste.com, depois o teste.exe e depois o teste.bat.

Isto é uma herança do antigo sistema operacional CP/M. (é só para mostrar o ordem de execução)

Todos os comandos usados no prompt podem fazer parte de um arquivo de lote. Podemos usar
também alguns comandos extras, para trabalhar com sub-rotinas, variáveis, etc.

Características de scripts PowerShell

www.mcsesolution.com.br
Scripts powershell sao muitos similares aos já conhecidos scripts, porém para a execução depende
do Shell do powershell Smile

A grande diferença esta no poder de que essa ferramenta prove. A principio assusta quem não é de
DEV, mas é só começar para ver que não é um bicho de 7 cabeças.

Powershell é um novo shell de linha de comando e linguagem de script para automação e


administração de sistemas. Criado com o .NET Framework,

São 129 ferramentas de linha de comando ("cmdlets") para executar tarefas comuns de
administração de sistemas, como gerenciamento de serviços, processos, logs de eventos,
certificados e do Registro, e o uso do WMI.

As ferramentas de linha de comando são fáceis de aprender e usar, possuem convenções de


nomenclatura padrão e parâmetros comuns, além de ferramentas simples para classificação,
filtragem e formatação de dados e objetos.

Echo on e Echo off


O Comando ECHO desabilita a repetição do comando na tela. Para não ver o comando como se ele
tivesse sido digitado devemos iniciar os arquivos de lote com a linha @echo off. O arroba (@) antes
de ECHO OFF omite a aparição do próprio comando echo.

O comando ECHO seguido por um texto, na execução do arquivo esse texto aparecerá como uma
mensagem.

Sintaxe:

ECHO [ON | OFF]


ECHO [mensagem]

O Comando PAUSE apenas pausa o script, porém é muito útil quando precisamos que uma
mensagem ou execução bem sucedida seja vista.

Sintaxe:
PAUSE

-> script1.bat
---------------------------------------
@ECHO off
CLS
ECHO Hello World
PAUSE
---------------------------------------

Dica: Para pular uma linha basta usar o comando ECHO e um caractere ASCII especial, para conseguir
esse caractere basta manter a tecla ALT pressionada, digitar 16, soltar a tecla ALT , pressione
novamente ALT e digite 8.

www.mcsesolution.com.br
Comando REM
O comando REM permite inserir comentários, em arquivos de lote, e caso você não queira executar
alguma linha basta inserir o comando REM antes do comando.

Sintaxe:
REM [comentário]
-> script2.bat
---------------------------------------
REM Desenvolvido por Daniel Donda
@ECHO off
CLS
ECHO Hello World
REM PAUSE
---------------------------------------
Observação: neste script o comando pause não será executado, pois esta como comentário.

Redirecionadores
O Sinal > representa um redirecionador. Podemos redirecionar a saída da tela, para qualquer porta
existente no micro.
Temos as seguintes portas:

Paralelas LPT1,LPT2,LPT3
Seriais COM1, COM2, COM3
PRN - representa a porta da impressora no DOS
NUL - representa uma porta nula.
ARQUIVO - substitua por qualquer arquivo

Muito importante:
Quando redirecionamos qualquer comando ou arquivo para outro arquivo usando > ele cria um
novo arquivo.
Para que o redirecionamento seja adicionado em um arquivo já existente, temos que usar >>.

Veja no exemplo:

-> script3.bat
---------------------------------------
@ECHO OFF
CLS
ECHO Imprimindo a lista de arquivos do diretório atual...
DIR > lista.txt
ECHO Fim do diretorio >> lista.txt
TYPE lista.txt > prn
---------------------------------------

Neste exemplo o comando dir é redirecionado para um arquivo de texto chamado lista.txt e em
seguida o comando echo adiciona a frase FIM DO DIRETORIO ao arquivo lista.txt e por final comando
type redireciona o conteúdo de lista.txt para a impressora.

www.mcsesolution.com.br
-> script4.bat
---------------------------------------
REM Autor: Daniel Donda
@ECHO OFF
CLS
ECHO Este é meu arquivo de lote e quando
ECHO quiser continuar pressione qualquer tecla !
PAUSE > NUL
---------------------------------------
Neste exemplo o comando pause está sendo direcionado para nulo, os seja sua mensagem padrão
não será exibida.

Comando SET (Váriaveis de ambiente)


O comando set é um comando extremamente poderoso. Sua função é exibir, definir e alterar
variáveis de ambiente.
Sempre nos deparamos com documentações técnicas onde é muito usado as variáveis de ambiente.
Por exemplo: %SYSTEMROOT%, ou %SYSTEMDRIVE%
Para consultar as variáveis de ambiente no prompt de comando simplesmente digite: SET

Essas variáveis de ambiente são do sistema, porém podemos definir nossas próprias variáveis.
A definição de variáveis é bem simples:
As variáveis possuem um nome, exemplo computername, mas devemos usar % para fazer o uso
das variáveis em scripts, como no exemplos %computername%.

SET [[variável]=[cadeia de caracteres]]

-> script5.bat
---------------------------------------
@ECHO OFF
CLS
SET SRT=SecurityResponse
MD C:%SRT%
COPY C:*.LOG /s C:%SRT%
---------------------------------------
Neste exemplo será definida a variável SRT, facilitando a criação de um diretorio e copia de arquivos.

www.mcsesolution.com.br
() Agrupamento !~- Operadores Unários

*/% Operadores Aritméticos +- Operadores Aritméticos

<< >> Alternância Lógica & bit a bit E

^ bit a bit exclusivo OU | bit a bit OU

= *= /= %= += - Atribuição
= &= ^= |= <<= >>=

‘ Separador de expressões

-> script6.bat
---------------------------------------
@ECHO OFF
SET /A SOMA=2+5
ECHO SOMA DE 2+5=%SOMA%
SET /A DIVISAO=9/2
SET /A MOD=9%%2
ECHO DIVISAO DE 9/2=%DIVISAO% COM RESTO=%MOD%
SET /A MULT=7*7
ECHO MULTIPLICACAO DE 7X7=%MULT%
---------------------------------------
Neste exemplo o script gera vários valores de operações matemáticas básicas.

Interação com o usuário


SET /P variável=[cadeia_do_prompt]

-> script7.bat
---------------------------------------
@ECHO OFF
CLS
SET /P NOME=QUAL O SEU NOME ?
ECHO OI %NOME%, VOCE ESTA USANDO O COMPUTADOR %COMPUTERNAME%
---------------------------------------
Neste exemplo o script lê o nome do usuário e imprime na tela o uma mensagem personalizada
com seu nome e o computador que esta usando.

Expansão de variáveis.
Uma mesma variável pode ser utilizada diversas vezes em um script e também pode ser definida
com valores diferentes durante a execução do script.

Por padrão a expansão de variável atrasada é desabilitado.


Isso será visto adiante no comando “SETLOCAL”.

www.mcsesolution.com.br
Comando If
O comando If executa processos condicionais em arquivos de lote.
Existem diferentes maneiras de utilizar esse comando:
Sintaxe:
IF [NOT] ERRORLEVEL numero comando
IF [NOT] string1= = string2 comando
IF [NOT] EXIST arquivo comando

Como vimos na sintaxe o comando IF (Se) pode ser usado ‘ e’ ou ‘se não’.
-> script8.bat
---------------------------------------
@ECHO OFF
CLS
IF NOT EXIST C:\atributos.txt (attrib > atributos.txt ) ELSE TYPE
atributos.txt
---------------------------------------

Neste exemplo o comando IF verifica se "não" existe um determinado arquivo e caso a condição for
verdadeira (ou seja não existir o arquivo) ele será criado, se ele existir será exibido na tela.

O comando IF pode verificar determinadas condições se adicionado o parâmetro /I:


EQU – Igual
NEQ – Diferente
LSS – Menor que
LEQ – Menor que ou igual
GTR – Maior que
GEQ – Maior que ou igual

-> script9.bat
---------------------------------------
@ECHO OFF
SET /P NUM=DIGITE UM NUMERO :
IF /I %NUM% EQU 10 (ECHO ACERTOU NA MOSCA
) ELSE ( ECHO ERROU
)
---------------------------------------

Neste exemplo é solicitado um valor para o usuário e se o valor for igual a 10 exibe uma mensagem
na tela.

Caracteres Especiais
ASCII - (American Standard Code for Information Interchange) © um conjunto de códigos para o
computador representar numeros, letras, pontuação e outros caracteres. Surgido em 1961, um dos
seus inventores foi Robert W. Bemer.
Fonte : Wikipedia

www.mcsesolution.com.br
Ao criar arquivos de lote é possivel definir caixas de mensagens e desenhos bem legais, basta seguir
a tabela ASCII.
Para conseguir utilizar esses caracters faça o seguinte:
Pressione ALT, Digite o numero, solte o ALT
Mais dicas:

Para pular uma linha com o echo:


Digite echo e na frente.
Pressione ALT, digite 16, solte o ALT, pressione ALT novamente e digite 8 e solte o ALT.
Para soar um bip com o echo:
Digite echo e na frente.
Pressione ALT e digite 16, solte o ALT, pressione ALT novamente e digite 7 e solte o ALT.

Comando GOTO
Direciona o interpretador de comandos do Windows para uma linha identificada como sendo um
"label" em um programa em lotes.

Sintaxe:
GOTO label
Exemplo:
---------------------------------------------------------------
@echo off
:loop
echo Para cancelar pressione CTRL + C ou fique ai vendo isso...
goto loop

www.mcsesolution.com.br
---------------------------------------------------------------

Aqui o comando "GOTO" vai para linha onde existe o label chamado loop (poderia ser qualquer
outro nome).

Ele é muito usado em conjunto com outros comandos como choice, IF.
Verifique o uso do GOTO nos outros comandos abaixo.

Comando FOR
Executa um determinado comando para cada arquivo em um grupo de arquivos

Modo de uso em linha de comando: FOR %variable IN (set) DO command [command-parameters]


Modo de uso em arquivos de lote: FOR %%variable IN (set) DO command [command-parameters]
poderiamos digitar o seguinte comando for %1 in (*.txt) do type %1

Sintaxe:
FOR %variable IN (set) DO command [command-parameters]

Exemplo 1
-------------------------------------------------------------
@echo off
cls
echo Listando os arquivos que podem ser apagados.
echo --------------------------------------------
for %%1 in (*.tmp *.bak *.old) do @echo %%1
echo --------------------------------------------
echo Fim da lista.
-------------------------------------------------------------

Neste exemplo o comando "FOR" mostra o nome de todos os arquivos que possuirem a extensão
*.tmp, *.bak e *.old.

Exemplo 2
-------------------------------------------------------------
@ECHO OFF
for /l %%1 in (1,1,50) do @echo Eu sei contar ate %%1
-------------------------------------------------------------
Onde está 1,1,50 significa de 1 em 1 até 50, tente alterar até 5000 !
E nestes exemplos o comando usa %% para ser usado em arquivios de lote, se for executar na linha
de comando usa apenas %.

www.mcsesolution.com.br
Comando Choice
Exibe uma mensagem de aviso especificada, efetua uma pausa para o usuário escolher entre um
conjunto de teclas especificado e fornece um parâmetro ERRORLEVEL para um programa de lote.
Sintaxe :
CHOICE [/C[:]teclas] [/N] [/S] [/T[:]c,nn] [texto]

FrownAtenção - o utilitário choice não está disponível no Windows XP e nem no Windows 2000
Server e Professional. Mas pode ser feito o download e utilizado normalmente, porém muda as
sintaxes dependendo da versão.

Exemplo:
-----------------------------------------------------------------------
@echo off
cls
echo Escolha a cor que deseja utilizar (O comando color funciona apenas no
w2k em diante)
echo A - Verde
echo B - Azul
echo C - Rosa
choice /c:abc Escolha a cor

if errorlevel 3 goto rosa


if errorlevel 2 goto azul
if errorlevel 1 goto verde

:verde
color 2
goto fim

:azul
color 1
goto fim

:rosa
color 5
goto fim
:fim
-----------------------------------------------------------------------
Nesse exemplo criamos um menu com 3 opções de cores para o prompt e usamos o comando choice
para fazer a escolha

O membro do grupo, Otto Luiz Castro Nunes comentou sobre o artigo indicando que o choice
também não está disponivel no Windows Server 2000.
Obrigado por colaborar.
Não se preocupe, está nos mais atuais. Até mesmo no Windows 8.

www.mcsesolution.com.br
Comando Netsh
O Comando Netsh é muito poderoso, e após um tempo utilizando este comando, acredito que você
não vai abrir as configurações de rede e alterar o IP na Interface Grafica.

Podemos também utilizar esse comando em arquivos de lote a fim de mudar as configurações de
multiplos computadores que executam o Windows XP, Server 2003, Vista e 2008.
O que pode ser feito com o comando NETSH.EXE ??

Visualizar as configurações de TCP/IP:


netsh interface ip show config

Alterar o IP da maquina para 192.168.1.1 e mascara 255.255.255.0


netsh interface ip set address name="conexão local" static 192.168.1.1
255.255.255.0

Alterar as configurações de TCP/IP para utilizar o endereço IP 10.0.0.2 com o gateway 10.0.0.1:
netsh interface ip set address name="Local Area Connection" static
10.0.0.2 255.0.0.0 10.0.0.1 1

Exportar as configurações de TCP/IP para um arquivo de texto:


netsh -c interface dump > c:\location1.txt

Importar as configurações de TCP/IP de um arquivo de texto.


netsh -f c:\location1.txt

Configurar para obter IP a partir de um servidor DHCP.


netsh interface ip set address name="Local Area Connection" dhcp

Configurar o DNS
netsh interface ip set dns "Local Area Connection" static 10.0.0.1

Configurar o WINS
netsh interface ip set WINs "Local Area Connection" static 10.0.0.1

Deixar o DHCP entregar o endereço do DNS.


netsh interface ip set dns "Local Area Connection" dhcp

Desabilitar a Placa de Rede


netsh interface set interface "Local Area Connection 2" DISABLED

Renomear a placa de Rede


netsh interface set interface name="Local Area Connection" newname=
%NOVONOME%

Desabilitar ou habilitar o Firewall


netsh firewall set opmode mode=enable

Windows Server 2008


Definir Proxy
netsh winhttp set proxy 192.168.4.4:66

www.mcsesolution.com.br
Exibir configuraão do NAP
netsh nap client show configuration

Referencia do comando Netsh no Technet:


http://technet.microsoft.com/en-us/library/cc754516.aspx

www.mcsesolution.com.br

Você também pode gostar