Tudo sobre batch: Apostilas, programas, dicas e tutoriais.

2 de jan. de 2009

Olá, agora mais um tutorial que achei na net, os mais "escondido", que são dificeis de achar (se não bem pesquisado), que são os melhores . Vamos lá
Autor: whit3_sh4rk


O que é um BAT?
Tipo de arquivo em lote (batch file) do DOS e sistemas Windows. Neste tipo de arquivo pode-se entrar vários comandos de linha de comando a serem executados, em vez de ter de escrevê-los um a um na linha de comando. O arquivo em lote com extensão BAT mais famoso é o Autoexec.bat, que é executado toda a vez em que o sistema operacional é carregado.

Bom, vamos conhecer agora alguns comandos que iremos usar frequentemente, se tiver dúvida, digite COMANDO /? que irá ser mostrado uma explicação e exemplos do seu uso:

ECHO
Serve para que seja ativado ou desativado o "eco" do comando ou para que seja mostrado uma mensagem. Usa-se echo. para quebrar uma linha.

Exemplo1:

@echo off
echo Olá mundo!
echo.
echo :D

O @ antes do echo off serve para que o mesmo não seja mostrado, e assim ele desative o "eco" silenciosamente. Se tiver alguma dúvida, crie um exemplo sem usar o @.

Exemplo 2:
@echo off
echo Inicio do arquivo > Teste.txt
echo. >> Teste.txt
echo Bla bla bla >> Teste.txt

Isso fará com que seja escrito os dados no arquivo Teste.txt, ficando assim:
Inicio do arquivo

Bla bla bla


CLS
Serve para limpar a tela.. é como se fosse um /clear para quem usa IRC.. ^^

GOTO

Serve para alterar a ordem normal de execução do batch, fazendo ir para um rótulo específico, um rótulo é identificado com o :.

Exemplo:
@echo off
GOTO UIA
echo Deveria aparecer isso se não fosse o rótulo :D
:UIA
echo Pulamos para cá! hehehe

Parâmetros
Isso é muito interessante.. é para que se possa usar parâmetros de execução em seu batch. Em programas por exemplo que precisa ser digitado:
nomedoprograma /i (para instalar)
nomedoprograma /d (para desintalar)
ou pode ser -i ao invés de /i e -d ao invés de /d.
No batch script, pode-se identificar o parâmetro, através disso:
%1 - Primeiro parâmetro
%2 - Segundo parâmetro e assim sucessivamente.

Exemplo:
@echo off
echo %1 - Parametro 1
echo %2 - Parametro 2

Execute-o assim: nomedoarquivo vamos ver
Aparecerá:
vamos - Parametro 1
ver - Parametro 2. Simples né?

SET
Serve para exibir, definir ou remover variáveis.
Variável é algo que guarda alguma informação, se chama variável por que seu valor pode variar. (duh)
Para setar uma variável: SET variavel=seu_valor
Para visualizar ou usar o valor da variável digite: %variavel%.

Exemplo:
@echo off
set nome=""
Digite o seu nome:
set /p nome=
echo.
echo Ola %nome% !!

IF / ELSE
É usado em praticamente todas linguagens de programação, serve para impor uma condição.

Exemplo:
@echo off
set opcao=""
echo Digite uma opcao (1 ou 2):
set /p opcao=
IF [%opcao%] EQU [1] (GOTO OPCAO1) ELSE (GOTO OPCAO2)
:OPCAO1
echo Opcao 1 bla bla bla
goto FIM
:OPCAO2
echo Opcao 2 bla bla bla
:FIM
echo CABOU

Se tiver dúvidas sobre o IF, digite no prompt IF /?

CHOICE (Em Win9x)
Possibilita dar opções de escolha para a pessoa.

Exemplo:
@echo off
choice /n/c123
if errorlevel 1 goto A1
if errorlevel 2 goto A2
if errorlevel 3 goto A3
:A1
echo Acao 1
goto FIM
:A2
echo Acao 2
goto FIM
:A3
echo Acao 3
goto FIM
:FIM
echo Kabou..

Bom, visto algumas funções, dê uma re-lida, use o parâmetro /? para conhecer mais sobre cada comando, crie coisinhas bobas para ver se já entendeu..
Bom, iremos criar duas tools(ferramentas), a primeira é para o comando PING e outra será para quem usa rede, pra facilitar o uso do NET SEND.
Talvez possa ter incompatibilidade com Win9x já que irei fazer no XP..

Muitos acham que o PING é apenas ping IP/HOST, mas desconhecem suas outras opções, então vamos lá, dê um PING /?:
Uso: ping [-t] [-a] [-n num] [-l tamanho] [-f] [-i TTL] [-v TOS]
[-r num] [-s num] [[-j lista_hosts] | [-k lista_hosts]]
[-w tempo_limite] nome_destino Opções:
-t Dispara contra o host especificado até ser interrompido.
Para ver estatísticas e continuar, pressione CTRL-Break;
para terminar, pressione CRTL-C.
-a Resolve endereços para nomes de host.
-n num Número de requisições de eco a enviar. O valor padrão é 4.
-l tamanho Envia o tamanho do buffer.
-f Ativa o sinalizador de não-fragmentação no pacote.
-i TTL Define o tempo de vida.
-v TOS Define o tipo de serviço.
-r num Rota dos pacotes para saltos.
-s num Data e hora para saltos.
-j lista_hosts Rota ampliada de origens definida em .
-k lista_hosts Rota restrita de origens definida em .
-w tempo_limite Tempo limite em milissegundos a aguardar para cada resposta.

Ótimo, vamos criar uma ferramenta para que ao usuário digitar o nome do batch file, ele pergunte o IP, número de requisições. tamanho do pacote e tempo limite.

Mãos a obra:

Dê um: edit xping.bat
Abrirar o editor.. se não gostar, faça no bloco de notas mesmo :P

Obs: REM é usado para comentar uma linha...
@echo off
REM Limpa as variaveis...
set ip=""
set num=""
set pack=""
set timeout=""
echo.
echo Qual o IP desejado?
REM Ira pegar o valor que for digitado e atribuir a variavel ip
set /p ip=
echo.
echo Qual o tamanho do pacote a ser enviado? (max: 65500)
REM Ira pegar o valor que for digitado e atribuir a variavel pack
set /p pack=
echo.
echo Qual sera o número de requisicoes? Coloque 0 para ser infinito.
REM Ira pegar o valor que for digitado e atribuir a variavel num
set /p num=
echo.
echo Qual sera o tempo limite de espera? Em milisegundos.
REM Ira pegar o valor que for digitado e atribuir a variavel timeout
set /p timeout=
echo.
cls
echo **********************************************
echo * *
echo * XPing por whit3_sh4rk *
echo * *
echo **********************************************
echo.
REM Mostra qual foi o alvo definido anteriormente, usando a variavel ip
echo Iniciando o ping ao alvo: %ip%
echo.
REM Lembra do numero de requisicoes? (Coloque 0 para ser infinito.)
REM Iremos pegar o valor atribuido ao numero de requisicoes
REM se for igual a 0 ele fara o ping infinito, usando o parametro -t
REM se não for igual a 0 ele pega o numero de requisicoes atribuido
REM a variavel %num% e usa-o...
IF [%num%] EQU [0] (
ping -t %ip% -l %pack% -w %timeout%
) ELSE (
ping %ip% -n %num% -l %pack% -w %timeout%
echo.
echo Fim do ping!
)

Ótimo, terminanos! Salve isso é claro!
Agora teste o programa, e tente entender cada linha(nossaaa q difícil!!) kkkk depois disso vamos agora para a próxima tool, nela usaremos parâmetros..
Obs: Só uma dica, se quiserem usarem parâmetros também nesse "xping" é só definir corretamente o parametro 1=ip, parametro 2=pack, parametro 3=num, parametro 4=timeout, ae é só a pessoa usar:

xping 127.0.0.1 65500 5 1000
Ou seja, irá pingar no 127.0.0.1, com um buffer de 65500 bytes, fazer isso 5 vezes, e esperar 1seg pelo resposta... :D

Mãos a obra 2 a revolta(lol):
Bom, imaginemos que aqui na rede tem 3 máquinas, seus nomes:
LOCKE
SAWYER
HURLEY

(qualquer semelhança com o seriado LOST é mera coincidência :)

Dê um: edit msg.bat

Vamos lá:
@echo off
set msg=""
IF [%1] EQU [] GOTO AFF
IF [%1] EQU [LOCKE] (GOTO LOCKE) ELSE IF [%1] EQU [SAWYER] (GOTO SAWYER) ELSE IF [%1] EQU [HURLEY] (GOTO HURLEY) ELSE (GOTO AFF)
:LOCKE
echo Digite a mensagem que deseja enviar para LOCKE:
set /p msg=
echo.
net send LOCKE %msg%
GOTO :EOF
:SAWYER
echo Digite a mensagem que deseja enviar para SAWYER:
set /p msg=
echo.
net send SAWYER %msg%
GOTO :EOF
:HURLEY
echo Digite a mensagem que deseja enviar para HURLEY:
set /p msg=
echo.
net send HURLEY %msg%
:AFF
echo.
echo Nenhum parametro valido foi especificado!


Salve..
Como será usado?
Abra o prompt e digite:
msg LOCKE
ou
msg SAWYER
ou
msg HURLEY

Lembre-se de que é CaSe SeNsItiVe :D


Autor: whit3_sh4rk
Fonte: http://www.wesk.org/textos/outros/2.html

0 comentários:

Postar um comentário