Vous êtes sur la page 1sur 22

Tutorial de VbScript

1995-2006 BrasCow / Kdex brascow@hotmail.com / darshu_14@hotmail.com loucura ser sbio quando a ignorncia a alegria de todos!

Chimera

TUTORIAL DE VBS Visual Basic Script

Introduo
Depois de navegar um pouco pelo google, tentando encontrar algum material sobre VBScript, e no encontrar nenhuma apostila ou tutorial sobre tal assunto, resolvi criar meu prprio tutorial. O objetivo deste tutorial auxiliar algum que queira comear a aprender VBS, mas para isso necessrio que a pessoa tenha ao menos um conhecimento bsico de lgica de programao. importante lembrar que VBScript pode ser usado em pginas da internet, assim como Java script. Mas, o vbs tambm pode ser um arquivo e ele ir funcionar como se fosse um arquivo de lote (os famosos .bat do dos), para tanto voc deve salvar o arquivo com a extenso .vbs, voc pode escrever os scripts no bloco de notas e para testar basta dar dois cliques no arquivo salvo.

Declarando variveis
Varivel tudo aquilo que est sujeito a modificaes e em programao so elas que guardam os dados, sejam eles entrados pelo usurio ou no.Para se declarar uma varivel em VBS deve se utilizar o seguinte modo: DIM [nome da varivel], [nome da varivel], [...] Ex: DIM nome, idade, top, contador, dia

Declarando constantes
Constantes tudo aquilo que no est sujeito a modificaes, na programao so semelhantes as variveis com a diferena de que os dados armazenados nela no mudam durante todo o programa, elas so sempre inicializadas com algum valor (dado), e eles no so entrados pelo usurio.Para se declarar uma constante faa do seguinte modo: Const [nome da constante] = [dado] Ex: CONST nome = Kdex CONST ano = 2005 CONST MinhaString = Isto uma string

1 Comeando o bsico
Vamos comear fazendo algo simples e depois iremos melhorando e complicando aos poucos. O primeiro script ir fazer aparece uma janela com a mensagem Al Mundo!, para tanto devemos utilizar o comando MsgBox.Copie o cdigo a seguir e salve como ex10.vbs: MsgBox "Al Mundo!",,"Exemplo 1-0"

1.1 O comando MsgBox


O comando MsgBox tem por objetivo exibir uma janela contendo uma mensagem ou alguma informao. Sua estrutura sempre ser: MsgBox (mensagem [,botes][,ttulo]) Ex: MsgBox "Comando MsgBox", vbCritical, "Tutorial de VBS" MsgBox "Comando MsgBox", 16, "Tutorial de VBS" MsgBox "VBS legal ?", vbYesNo + vbQuestion, "Tutorial de VBS" Os dois exemplos acima fazem a mesma coisa, abre uma janela com a mensagem Comando MsgBox e com um cone de Mensagem critica. Voc pode utilizar no local de botes os valores dos botes ou as constantes do mesmo, assim como feito no segundo exemplo. Segue a seguir a lista dos botes que podem ser utilizados em conjunto com o comando MsgBox: Constante VbOKOnly VbOKCancel VbAbortRetryIgnore VbYesNoCancel VbYesNo VbRetryCancel VbCritical VbQuestion VbExclamation VbInformation Valor 0 1 2 3 4 5 16 32 48 64 Descrio Mostra apenas o boto OK. Mostra os botes OK e Cancel. Mostra os botes Abort, Retry, e Ignore. Mostra os botes Yes, No, e Cancel. Mostra os botes Yes e No. Mostra os botes Retry e Cancel. Exibe o cone de Critical Message. (Mensagem critica). Exibe o cone de Warning Query.( uma interrogao). Exibe o cone de Warning Message.(exclamao). Exibe o cone de Information Message.( um i)

Faa alguns testes antes de prosseguir adiante com os estudos. Valores de Retorno Constante vbOK vbCancel vbAbort vbRetry vbIgnore vbYes vbNo Valor 1 2 3 4 5 6 7 Descrio Boto OK foi pressionado. Boto Cancel foi pressionado. Boto Abort foi pressionado. Boto Retry foi pressionado. Boto Ignore foi pressionado. Boto Yes foi pressionado. Boto No foi pressionado.

A tabela a cima indica os valores que so retornados quando algum boto do MsgBox pressionado, veremos melhor isto na parte 2 do tutorial. Para o segundo script iremos fazer o mesmo que o primeiro, ex10.Vbs, mas iremos utilizar uma constante para definir o que ele deve mostrar na janela aberta.Digite o cdigo a seguir e salve como ex11.vbs: Const texto = "Isto est dentro de uma constante..." REM O trecho acima guarda a mensagem na constante texto, 'para que possa ser utilizada logo em seguida. MsgBox texto, 64, "Exemplo 1-1"

1.2 Comentando o cdigo


Comentrios so trechos do cdigo que no so lidos, ou seja, eles no so executados no script.Um exemplo pode ser visto nas linhas 2 e 3 do exemplo anterior. Em VBS existem dois modos de se comentar uma linha e eles sero explicados a seguir: REM comentrio comentrio A diferena entre os dois est no momento em que eles so utilizados, o comando REM utilizado apenas no comeo de uma linha e serve para fazer comentrios sobre o script que passou ou que vir, ou ainda dar alguma informao adicional.J o (apostrofo) pode ser colocado em qualquer lugar da linha e tudo aps ele ser ignorado, geralmente usado para explicar o que aquela linha de cdigo faz exatamente. Ex: REM Cdigo feito por membros do chimera MsgBox "Aloha milord" 'Exibe uma mensagem de boas vindas

2 Interagindo com o usurio


O exemplo a seguir, ir fazer uma pergunta para o usurio e dependendo do que ele responder ser mostrada uma janela diferente.Copie o cdigo a seguir e salve como ex20.vbs: DIM resposta resposta = MsgBox ("Voc gosta do Windows ?", VbYesNo, "Exemplo 2-0") If resposta = 6 Then 'Se resposta for igual a sim (6) ento MsgBox "Ento continue usando ele!", 48, "Aviso" Else MsgBox "Voc devia trocar pelo Linux", 64, "Dica" End If Rode o script e veja que dependendo do que voc responde, ele abre uma janela diferente com uma mensagem.Explicando o cdigo: Na primeira linha: feita a declarao da varivel resposta, que tem por objetivo armazenar o valor da resposta escolhida. J na segunda linha: a varivel resposta recebe o valor do boto pressionado, por isso ela est assim resposta = MsgBox. Se o boto pressionado for SIM ou YES, a varivel resposta ir receber o valor 6. Mas,

se o boto pressionado for NO ou NO, a varivel resposta ir receber o valor 7.Para ver o valor devolvido por outros botes consulte a tabela Valores de Retorno (parte 1.1). Entre a linha 3 e 7 se encontra o cdigo que nos interessa, o cdigo responsvel pela exibio das mensagem dependendo da resposta.

2.1 Estrutura de deciso (If... Then... Else)


Estrutura de deciso como o prprio nome j diz servem para tomar uma deciso, quero dizer, fazer coisas diferentes de acordo com a situao. A instruo If... Then... Else, servem para isso e podem ser traduzidas como Se... Ento... Seno.Usando o exemplo ex20.vbs ele faz o seguinte: Na linha 3 ele verifica se o boto pressionado foi sim, neste caso ele compara o valor contido na varivel resposta com 6(que o valor retornado caso seja clicado em sim). Se (If) a verificao for verdadeira, isto , se foi pressionado o sim, ento (Then) o script executa a linha 4, seno (Else) executa a linha 6. A estrutura do comando If a seguinte: If condio1 Then [Bloco de instrues] [Else If condio-n Then [Bloco de instrues 2]]... [Else [Bloco de instrues para seno]] End If Ex: If 2 = 2 Then 'Se 2 igual a 2 ento MsgBox "Esta condio verdadeira!" Else 'Se no MsgBox "Esta condio falsa!" End if 'Fim se, indica o final do trecho de deciso. If 3 >= 6 Then 'Se 3 maior ou igual a 6 ento MsgBox "Esta condio verdadeira!" Else 'Se no MsgBox "Esta condio falsa!" End if 'Fim se, indica o final do trecho de deciso. Explicando a estrutura, enfim: Condio uma comparao que feita pelo comando If (Se) que pode retorna falso ou verdadeiro.Segue a seguir uma tabela contendo os operadores que podem ser usados nas condies e um exemplo rpido de cada um: Operador = <> > < >= <= Nome Igual Diferente Maior Menor Maior ou igual Menor ou igual Tabela de Operadores Exemplo Resultado 3 = 3 Verdadeiro 7 <> 2 Verdadeiro 91 > 0 Verdadeiro 51 < 69 Verdadeiro 13 >= 13 Verdadeiro 21 <= 25 Verdadeiro Exemplo 14 = 21 7 <> 7 4 > 6 55 < 33 18 >= 13 42 <= 41 Resultado Falso Falso Falso Falso Verdadeiro Falso

Pegue um dos exemplos da tabela e troque com a condio apresentada nos exemplos a cima, para testar. Bloco de instruo o conjunto de instrues ou comandos que o script deve executar caso a condio seja verdadeira. Bloco de instrues para seno o conjunto de instrues que o script ir executar caso a condio testada seja falsa. End if usado para fechar, terminar, a estrutura de deciso If. Agora faa um script que diga que ir formatar o computador, e tenha como opes os botes OK e CANCEL. Se o usurio escolher OK ele deve exibir uma janela dizendo que o usurio corajoso, se no deve dizer que ele covarde.A soluo est aqui em baixo.Salve-o como ex21.vbs: Dim botao botao = MsgBox ("Seu computador ser formatado !", 17, "Aviso do Sistema") If botao = 1 Then MsgBox "Voc corajoso, meu filho...",64 Else MsgBox "Voc o maio covarde que eu j conheci !",48 End if

2.2 O comando InputBox


O comando InputBox tem por finalidade receber a entrada de um texto inserido pelo usurio e armazena-lo em uma varivel.Este geralmente o nome, idade, nascimento do usurio ou qualquer outra coisa. InputBox (mensagem [,ttulo][,resposta padro][,posio X] [,posio Y]) Ex: InputBox "Qual a sua idade?", "Pergunta", "16 anos", 200,200 InputBox "Que msica voc gosta?", "Duvida", "Rock" InputBox "Qual o seu nome?", "Pergunta" Agora irei mostrar um script que recebe o nome do usurio e lhe desejas boas vindas.Copie-o e salve como ex22.vbs: Dim nome nome = InputBox ("Qual a seu nome?", "Duvida", "Usurio") MsgBox "Seja bem vindo, " & nome,,"Exemplo 2-2" O caractere & tem como funo concatenar duas string, ou seja, juntar duas palavras ou texto. Ex: Kdex of & Chimera ser igual a Kdex of Chimera Agora faremos um script, onde o usurio ir entrar com o seu nome e sua Senha.Se o nome e a senha forem validos ser exibida uma mensagem de acesso permitido, caso contrrio dever ser exibido uma mensagem de acesso negado.o nome ser root e a senha ser admin.

Uma das solues possveis est a seguir e usa do que chamamos de estrutura de deciso encadeada, para saber mais sobre est estrutura aconselho a leitura de uma apostila de lgica de programao. Dim nome,senha nome = InputBox ("Entre com seu nome :", "Login", "Usurio") senha = InputBox ("Entre com sua senha :", "Login") If nome = "root" Then If senha = "admin" Then MsgBox "Acesso permitido",,"Passe" Else MsgBox "Acesso negado",48, "Tente de novo" End if Else MsgBox "Acesso negado",48 End if

3 Estruturas de repetio
Estrutura de repetio, ou lao de repetio, aquela responsvel por repetir um pedao do cdigo por um certo nmero de vezes ou at que uma condio seja verdadeira. Vou por um script para ilustrar o que eu quero dizer, este Script ir exibir uma mensagem qualquer 10 vezes seguida.Voc pode salva-lo como ex30.vbs: Dim I For I = 1 to 10 MsgBox "Tutorial de VBS - Chimera",,I & " - Exemplo 3-0" Next

3.1 Lao de repetio (For... Next)


A instruo For... Next pode ser traduzido como Para... e prximo.Esta instruo usada quando queremos repetir certo trecho do cdigo por um nmero de vez j determinado, como podemos ver no exemplo ex30.vbs. For varivel = valor_inicial to valor_final [Step incremento] (Bloco de instrues) [End For] (Bloco de instrues) Next Ex: For I = 5 to 10 'Para I v de 5 at 10 MsgBox I,,"Contador de 5 at 10" Next 'Aumenta o valor de I em 1 e volta para o comeo For X = 1 to 10 'Para X v de 1 at 10 MsgBox "S est linha ser executada",,X End For 'Termina a execuo do lao For... Next MsgBox "Isto no vai ser mostrado" Next

Tudo que for escrito entre For e Next ser repetido pelo nmero de vezes que for decidido, a no ser que seja encontrada a instruo End For que por sua vez encerra o lao de repetio. A finalidade de Step, quando aparece, o de decidir em qual velocidade o lao ir se mover, ou seja, se ele vai rodar de 1 em 1, 2 em 2 ou 7 em 7 e assim por diante. Para testar a opo Step faa um script que mostre apenas os cinco primeiros nmeros pares. Salve o script como ex31.vbs. A soluo est logo a seguir: Dim I For I = 2 to 10 Step 2 MsgBox I,,"Exemplo 3-1" Next 'Para I v de 2 at 10, mas de 2 em 2

3.2 Lao de repetio (While... Wend)


Esta instruo tem por objetivo repetir um trecho do cdigo enquanto uma condio for verdadeira.Esta instruo pode ser traduzida como Enquanto... Prossiga.A sua estrutura a seguinte: While condio (Bloco de instrues) Wend Ex: While contador < 20 contador = contador + 1 MsgBox contador,, "Tutorial de VBS - Chimera" Wend While nome <> "chimera" Nome = InputBox ("Entre com um nome para sair","nome: chimera") Wend Tudo o que for escrito entre While e Wend ser repetido enquanto a condio for verdadeira, assim que for considerada falsa a instruo While encerrada. Agora para um exemplo iremos fazer um script que ir exibir tudo o que o usurio digitar dentro InputBox, e s ir parar de repetir o trecho quando o usurio digitar sair.Salve o exemplo como ex32.vbs: Dim texto While texto <> "sair" texto = InputBox ("Digite alguma coisa:","Tutorial de VBS MsgBox texto,,"Exemplo 3-2" Wend

Chimera")

3.3 Lao de repetio (Do... Loop)


A instruo Do... Loop faz exatamente o mesmo que outros Laos de repetio, repete um determinado trecho do cdigo, denominado aqui como bloco de instrues.A diferena desta instruo, que pode ser traduzida como Faa... Volta, est no fato de ela poder se repetir at que a condio seja verdadeira ou enquanto ela for verdadeira.

H mais diferenas nesta instruo: uma delas fato de no ser obrigado a colocar uma condio; outra diferena desta estrutura est no fato de ela possuir duas estruturas diferentes.Em uma a condio declarada no inicio, na outra no fim.Vejamos a estrutura, ento: Do [{While | Until} condio] (Bloco de instrues) [Exit Do] (Bloco de instrues) Loop Do (Bloco de instrues) [Exit Do] (Bloco de instrues) Loop [{While | Until} condio] Ex: Do While contador < 20 contador = contador + 1 MsgBox contador,, "Tutorial de VBS - Chimera" Loop Do Until nome = "chimera" nome = InputBox ("Entre com um nome para sair","nome: chimera") Loop Agora os mesmos exemplos, mas com as condies no final: Ex: Do contador = contador + 1 MsgBox contador,, "Tutorial de VBS - Chimera" Loop While contador < 20 Do nome = InputBox ("Entre com um nome para sair","nome: chimera") Loop Until nome = "chimera" A diferena entre os dois modos, est no fato de que se a declarao da condio feita no inicio, dependendo do cdigo que o precede, o trecho entre Do e Loop pode chegar a no ser executado.Mas, se fizer a declarao de condio no final, ela ser executada ao menos uma vez. Apenas para constar o until da instruo quer dizer at que.Sobre como usar a estrutura Do... Loop sem usufruir de condio, o modo de utiliza-lo o mesmo, mas voc deve por um comando Exit Do dentro do cdigo para finalizar o lao. Como exemplo iremos fazer um script, sem declarar uma condio na estrutura, que ir se repetir at que o usurio no digite nada.Salve este exemplo como ex33.vbs: Dim nome Do nome = InputBox("Para sair no digite nada", "Exemplo 3-3") If nome = "" Then Exit Do End If Loop

Para praticar tente fazer alguns script, eis aqui uma idia: 1- Faa um script que tente descobri a idade do usurio, chutando todas as alternativas.Obs: ele deve chutar uma por vez e permite que o usurio diga se ele acertou ou no. Uma das solues possvel essa: Dim numero, resp 'Declara as variveis numero = 0 'Inicializa a varivel numero com o valor 0 Do numero = numero + 1 'Incrementa a varivel numero em 1 resp = MsgBox ("Voc tem "&numero&" anos?",VbYesNo,"Tutorial de VBS") IF resp = 6 Then 'Se a resposta for afirmativa ento Exit Do 'Termina o lao de repetio End if Loop MsgBox "Acertei...hahaha",48, "Tutorial de VBS - Chimera"

4 Algumas funes do VBScript


Antes de comear a falar sobre algumas funes de VBScript, devo explicar o que exatamente uma funo.Funes so rotinas, bloco de instrues, preestabelecidas que executam uma determinada tarefa.Um fator importante a se destacar sobre funes o fato de elas sempre retornarem alguma coisa (texto, valor, etc.). Desde o inicial deste tutorial voc tem usado funes sem ao menos saber que o estava fazendo.As instrues MsgBox e InputBox so funes, pois ambas retornam um valor.Na funo MsgBox o valor retornado o valor numrico do boto pressionado, j na funo InputBox o valor retornado o que foi digitado pelo usurio. Tendo entendido isto, podemos partir para mostrar algumas funes do VBS, no iremos ver todas, apenas as quais eu considero importante.

4.1 Funes Chr e Asc


Est duas funes trabalham basicamente com o cdigo ASCII.A diferena entre cada uma delas : Chr: retorna o caractere associado com o seu cdigo especifico de caractere. Asc: retorna o cdigo de caractere correspondente a primeira letra da string (conjunto de caractere). A estrutura esta a seguir: Chr(cdigo de caractere) Asc(conjunto de caractere) Ex: Meu_Numero MinhaLetra Meu_Numero MinhaLetra Meu_Numero MinhaLetra = = = = = = Asc(A) Chr(97) Asc(?) Chr(62) Asc(Anne) Chr(37) Retorna Retorna Retorna Retorna Retorna Retorna o o o o o o valor 65. caractere a. valor 63. caractere >. valor 65. valor %.

Para facilitar o trabalho de descobrir qual o valor da letra que se deseja, use o Script a seguir.Salve-o como ex40.vbs.Aproveite o cdigo e analise-o. Dim letra, resposta, numero MsgBox "Script para descobrir o cdigo ASCII",,"Exemplo 4-0" Do Letra = InputBox("Digite a letra que se deseja descobri o valor:") Numero = Asc(letra) MsgBox "O valor para a letra: "&letra& " "&numero,,"Tutorial de VBS" Resposta = MsgBox("Deseja continuar?",36,"Tutorial de VBS - Chimera") Loop until resposta = 7

4.2 Funes Int e Fix


Est duas funes trabalham basicamente com nmeros reais, fracionrios.O que elas fazem transformar um nmero fracionrio em inteiro.A diferena entre elas aparece apenas quando se trabalha como um nmero negativo: Int: quando trabalha com nmero negativo arredonda para baixo. Fix: quando trabalha com nmero negativo arredonda para cima. A estrutura esta a seguir: Int(nmero real) Fix(nmero real) Ex: MeuNumero MeuNumero MeuNumero MeuNumero MeuNumero MeuNumero = = = = = = Int(99.8) Fix(99.2) Int(-99.8) Fix(-99.8) Int(-99.2) Fix(-99.2) ' ' ' ' ' ' retorna retorna retorna retorna retorna retorna o o o o o o valor valor valor valor valor valor 99. 99. -100. -99. -100. -99.

A partir de agora as coisas comeam ficar interessantes, podemos classificar o que vir adiante como nvel intermedirio (esta apenas a minha definio).Depois de voc j ter visto o bsico, vamos comear a trabalhar com objetos, ou seja, voc ir ver como copiar arquivo, criar arquivos de texto, entre outras coisas. Divirta-se...

5 Utilizando Objetos
Objeto - qualquer estrutura modular que faz parte de um produto. Uma janela, por exemplo, um objeto de uma casa, de um carro ou de um software com interface grfica para o usurio. Atributos - So as caractersticas do objeto, como cor e tamanho, a janela, por exemplo, tem atributos como o modelo, tamanho, abertura simples ou dupla, entre outros. Definio extrada de a Bblia do Delphi desvendando o caminho das pedras, do autor Fernando Anselmo. Veja um exemplo do que se capaz de fazer utilizando os objetos do VBS, o exemplo ir apenas abrir o bloco de nota.Copie-o e salve como ex50.vbs: REM Tutorial de VBS - Chimera dim wsh Set wsh = CreateObject ("Wscript.Shell") wsh.Run ("notepad.exe") Uma explicao rpida sobre o que acontece quando se executa este Script: Na segunda linha feita a declarao da varivel que ir receber objeto Wscript.Shell, o responsvel por rodar o bloco de notas. Na terceira linha a varivel wsh recebe o objeto Wscript.Shell, por meio do comando set e createobject. Na quarta linha utilizamos o comando Run da varivel wsh, que recebeu por ser, agora, o objeto Wscript.Shell.

5.1 A instruo Set


A instruo set (conjunto) serve para ligar uma varivel a um objeto (conjunto de propriedades e funes).Ele geralmente vm acompanhado de outra instruo na mesma linha, a instruo CreateObject, que veremos adiante.A estrutura do comando Set : Set (varivel) = (expresso de objeto | novo objeto) Ex: Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.OpenTextFile("c:\testfile.txt",2, True) Set wsh = CreateObject("wscript.shell") Obs: Geralmente necessrio que se declare as variveis que sero usadas no comando Set; Alguns objetos possuem dentro de si mesmo outros objetos, como veremos mais adiante, e estes podem ser apontados para outras variveis.

5.2 O objeto Wscript.Shell


O objeto wscript.Shell nos permite trabalhar com o windows, com ele podemos rodar programas, editar e ler o registro, entre outras coisas acredito, embora nunca tenha nenhum outro uso pra este objeto. Para poder utilizar o objeto Wscript.Shell deve-se ligar este objeto a uma varivel, como j visto anteriormente. Ex: Dim wsh Set wsh = CreateObject("Wscript.Shell") A linha a cima, cria o objeto Wscript.Shell e o liga a varivel wsh. A partir de agora, sempre que quisermos nos referir ao objeto Wscript.Shell iremos usar a varivel wsh (poderia ser outra varivel qualquer, mas preferi esta por lembrar de qual objeto se trata mais facilmente).

5.2.1 O comando Run do Wscript.Shell


O comando Run, como foi mostrado no exemplo ex50.vbs, serve para executar um programa externo, ou seja, com ele possvel rodar um programa qualquer. O comando Run funciona semelhante a caixa de executar do windows, com ele tambm possvel abrir arquivos no executveis, desde que colocadas as devidas extenses, e at mesmo pastas. Wsh.Run (arquivo a ser executado) Ex: Wsh.run Wsh.run Wsh.run Wsh.run ("wordpad.exe") ("command.com") ("C:\windows") ("C:\windows\wplog.txt")

Devo lembrar que se o arquivo que for ser executado no se encontra na pasta atual e nem no PATH de diretrios do windows, local onde o windows procura pelo programa a ser executado, voc precisar especificar tambm o caminho do arquivo a ser executado. Agora irei mostrar um script que dever funcionar como se fosse a prpria caixa de executar do windows, onde permitir voc abrir/executar um arquivo ou pasta. Salve-o como ex521.vbs: Dim wsh, arquivo Set wsh = CreateObject("Wscript.Shell") arquivo = InputBox("Entre com o comando","Exemplo 5-2.1") wsh.run(arquivo) Obs: Ele ir dar erro caso seja indicado um arquivo ou caminho inexistente.

5.2.2 Trabalhando com o Registro do Windows


Para trabalhar com o registro do windows, iremos usar os comandos: 1- RegWrite para escrever uma chave e valor no registro 2- RegRead para ler um valor do registro 3- RegDelete para apagar uma chave ou um valor no registro Para entender melhor sobre o que o registro e para que ele serve, aconselho pesquisar na internet ou buscar um livro de windows que trate sobre o assunto.Voc pode achar algo em http://www.txt.org.

A sintaxe deles a seguinte: Wsh.RegWrite chave, dado[, tipo] Wsh.RegRead (chave) Wsh.RegDelete chave Ex: wsh.RegWrite "HKLM\Software\Microsoft\Windows\Chimera\Kdex","Tutorial" wsh.regread ("HKLM\Software\Microsoft\Windows\Chimera\Kdex") wsh.Delete ("HKLM\Software\Microsoft\Windows\Chimera\Kdex") wsh.Delete ("HKLM\Software\Microsoft\Windows\Chimera\") No local onde est marcado chave, voc pode colocar a chave em si ou o valor a ser trabalhado.O vbs entende que se a chave terminar com um caractere \, ento se trata de uma chave do registro, caso contrrio se trata de um valor. Nos exemplos acima ele cria na primeira linha uma chave chamada chimera dentro da chave Windows e um valor chamado Kdex, contendo o dado tutorial, dentro da chave chimera. Na segunda linha ele o dado contido no valor Kdex da chave chimera. Na terceira linha, o valor Kdex apagado junto com seu contedo. J na quarta linha apagada a chave chimera com todos os valore que estiverem dentro dela. Quando se trabalha com o registro do windows pode-se usar de abreviaes para as chaves principais do registro.As abreviaes so as seqguintes: Constante HKCU HKLM HKCR Chave HKEY_CURRENT_USER HKEY_LOCAL_MACHINE. HKEY_CLASSES_ROOT

Na parte onde est escrito tipo, se refere ao tipo de dado que ser armazenado no registro e esses podem ser: -REG_SZ -REG_EXPAND_SZ -REG_DWORD -REG_BINARY Vamos fazer agora um script que crie uma chave de nome Chimera na chave HKEY_LOCAL_MACHINE\SOFTWARE.Iremos colocar dentro desta chave um valor chamado Site que conter o endereo http://www.vxbrasil.com. Colocaremos tambm um valor de nome Source, contendo o dado Tutorial de VBS.Salve este script como ex5220.vbs: Dim wsh Set wsh = CreateObject("Wscript.Shell") wsh.RegWrite "HKLM\Software\Chimera\Site","http://www.vxbrasil.com" wsh.RegWrite "HKLM\Software\Chimera\Source","Tutorial de VBS" MsgBox "Chave e valores criados.",64,"Exemplo 5-2.2-0" O exemplo acima cria as chaves e os valores no registro do windows, para se funcionou corretamente use o programa regedit.exe que instalado junto com o windows.

O prximo script ir ler os valores que colocamos no registro e exibir para que ns possamos ver. Para que o script rode corretamente necessrio ter rodado o exemplo anterior, e que no se tenha apagado a chave nem os valores criado por ele. Salve o exemplo a seguir como ex5221.vbs: Dim wsh, valor1, valor2 Set wsh = CreateObject("Wscript.Shell") valor1 = wsh.RegRead ("HKLM\Software\Chimera\Site") valor2 = wsh.RegRead ("HKLM\Software\Chimera\Source") MsgBox "O dado do valor Site "&valor1 ,64,"Exemplo 5-2.2-1" MsgBox "O dado do valor Source "&valor2 ,64,"Exemplo 5-2.2-1" Embora no seja necessrio explicar, as variveis valor1 e valor2 so usadas apenas para armazenar os dados contidos nos valores Site e Source respectivamente. E para finalizar a parte que fala sobre trabalho com registro, iremos fazer um script que apague a chave e os valores criados pelo ex5220.vbs. Para que o script rode corretamente necessrio ter rodado o exemplo anterior, e que no se tenha apagado a chave nem os valores criado por ele, ou seja, se for roda-lo duas vezes, necessrio que se rode o ex5220.vbs de novo.Veja o cdigo e salve-o como ex5222.vbs: Dim wsh Set wsh = CreateObject("Wscript.Shell") wsh.RegDelete ("HKLM\Software\Chimera\Site") 'Apaga o valor Site wsh.RegDelete ("HKLM\Software\Chimera\Source") 'Apaga o valor Site wsh.RegDelete ("HKLM\Software\Chimera\") 'Apaga toda a chave Chimera MsgBox "Chave e valores deletados",64,"Exemplo 5-2.2-2" Um outro modo de fazer isto apenas excluindo a chave que tambm resolve tudo, o script para tal coisa o seguinte e se voc quiser pode salva-lo como ex5223.vbs: Dim wsh Set wsh = CreateObject("Wscript.Shell") wsh.RegDelete ("HKLM\Software\Chimera\") 'Apaga a chave e seu contedo MsgBox "Chave e valores deletados",64,"Exemplo 5-2.2-3"

5.3 O objeto FileSystemObject


O objeto filesystemobject repleto de propriedades, funes e outros objetos.Usando o filesystemobject voc poder criar arquivos, pastas, escrever em arquivos textos, verificar as unidades de disco do computador, entre outras coisas.Ele ligado a uma varivel da seguinte maneira: Ex: Dim fso Set fso = CreateObject("Scripting.FileSystemObject") A linha a cima, cria o objeto FileSystemObject e o liga a varivel fso. A partir de agora, sempre que quisermos nos referir ao objeto FileSystemObject iremos usar a varivel fso (poderia ser outra varivel qualquer, mas preferi esta por lembrar de qual objeto se trata mais facilmente). Irei mostrar agora um exemplo de script usando o FileSystemObject, observe e salve como ex53.vbs:

dim fso,f Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.OpenTextFile("VXChimera.txt",2,True) f.WriteLine "Kdex" f.Write "Tutorial de VBS - Chimera" & vbCrLf f.Write "O cdigo a fonte" f.Close Rode o script e veja que ele cria uma arquivo texto com o nome de VXChimera.txt.A nica explicao que considero necessria no momento sobre o uso do comando Set que agora foi usado de modo diferente. Como foi dito antes, o objeto FileSystemObject possui dentro dele outros objetos.Na terceira linha quando a varivel f setada ao filesystemobject(fso), criado pelo fso.OpenTextFile um objeto de arquivo texto que possui propriedades para trabalhar com o arquivo. Os demais modos de setar uma varivel so iguais a este, ento no vou tentar explicar novamente.

5.3.1 Trabalhando com arquivos de texto, leitura e escrita


s vezes precisamos criar alguns arquivos, para armazenar algum tipo de dado ou para gerar um outro tipo de arquivo como, por exemplo, html, bat, vbs, js ou qualquer outro tipo de arquivo que possa ser gerado usando apenas o bloco de notas. O comando principal para se trabalhar com arquivos do tipo texto o OpenTextFile que se encontra no objeto FileSystemobject.Este comando tem como objetivo ligar um arquivo texto existente a uma varivel para que ele possa ser trabalhado, ou caso este arquivo no exista, este comando server par cria-lo caso assim deseje.Sua estrutura a seguinte: fso.OpenTextFile (nome_arquivo,modo[,criar][,formato]) Ex: Set file = fso.OpenTextFile(C:\autoexec.bat,8,false) Set file = fso.OpenTextFile(VXChimera.txt,1,false) Set file = fso.OpenTextFile(Tutorial.txt,2,True) O parmetro modo indicado na estrutura serve para informar como o arquivo ser aberto, se vai ser apenas para leitura, para escrita ou para escrita no final do arquivo.Os modos e suas diferenas so listados seguir: Constante ForReading ForWriting ForAppending Valor Descrio 1 2 8 Abre o arquivo apenas para leitrura, voc no pode escrever nele. Abre o arquivo apenas para escrever voc no pode ler deste arquivo. Abre o arquivo para escrever no final do arquivo, ltima linha.

Se for utilizado o valor 2 como opo de modo, o arquivo existente, caso haja, ser apagado e sobrescrito.Ento tome muito cuidado ao usar o valor 2. O parmetro criar indica se o arquivo pode ou no ser criado caso ele no exista.O valor padro para este item False, caso o arquivo no exista ele no ser criado, mas se voc indicar True o arquivo ser criado se j no existir.

J a opo formato nos mostra como arquivo ser aberto, se vai ser aberto em formato ASCII ou unicode, o padro para esta opo usar o formato padro do sistema operacional.Os valores para esta opo so: Constante TristateUseDefault TristateTrue TristateFalse Valor -2 -1 0 Descrio Abre o arquivo usando o padro do sistema. Abre o arquivo em formato unicode. Abre o arquivo em formato ASCII.

Veja um exemplo apenas para ilustrar este tpico, ele ir criar um arquivo do tipo txt, em branco, apenas, salve-o como ex531.vbs: dim fso,f Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.OpenTextFile("ex531.txt",2,True)'Cria o arquivo em si f.Close 'Sai do modo de edio do arquivo

5.3.2 Escrevendo em um arquivo de texto


Para se escrever em um arquivo de texto, usamos os comandos: Write, WriteLine ou WriteBlankLines.A diferena entre eles a seguinte: - Write Escreve um texto especifico em na linha atual - WriteLine Escreve um texto na linha atual e passa para a prxima - WriteBlankLines Insere n linhas em branco A estrutura desses comandos : f.Write mensagem f.WriteLine mensagem f.WriteBlankLines (nmero_de_linhas) Ex: f.Write Kdex do Chimera f.WriteLine Tutorial de VBS f.WriteBlankLines(5) O f mostrado aqui em cima uma varivel que foi ligada a um objeto do tipo file(arquivo) pelo comando fso.opentextfile.Usei a varivel f por ser uma abreviao de file (arquivo em ingls), mas poderia ser outra varivel.Para entender melhor veja o exemplo abaixo, salve-o como ex532.vbs: dim fso,f Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.OpenTextFile("VXChimera.txt",2,True) f.WriteLine "Escreve uma linha e passa para a prxima" f.Write "Escreve um texto e continua na linha..." f.Write "Ainda estamos na mesma linha" F.WriteBlankLines(5)'Cria 5 linhas em branco F.Write "Estou escrevendo na ultima linha criada (linha 5)" & vbCrLf F.Write "A constante vbCrLf faz passar pra outra linha" f.Close 'Fecha o arquivo VXChimera.txt Quando trabalhamos com texto em vbs, podemos usar de constantes para simular o pressionamento da tecla <ENTER> e algumas outras teclas, veja a seguir algumas constantes que podemos usar no Microsoft Windows:

Constante vbCrLf vbNewLine vbNullChar vbTab

Valor Chr(13) & chr(10) Chr(13) & chr(10) Chr(0) Chr(9)

Descrio Simula um <ENTER> no notepad. Cria uma nova linha igual a vbCrLf. String com valor 0, mas diferente de () Simula o pressionamento de <TAB>.

Estas constantes tambm podem ser usadas nos comandos InputBox e MsgBox, como tambm pode ser usadas em qualquer varivel do tipo String.

5.3.3 Lendo de um arquivo de texto


Existem alguns comandos que usamos para ler de um arquivo do tipo texto, estes comandos so: - Read L um nmero especfico de caracteres a partir da posio atual, e se posiciona na posio do caractere seguinte; - ReadLine L o resto da linha a partir da posio atual, e se posiciona no inicio da prxima linha; - ReadAll L o resto de todo o texto a partir da posio atual, e posiciona no final do texto. importante lembrar que estes comandos na verdade so funes, pois todos eles retornam um valor, que neste caso o prprio texto lido. A estrutura destes comandos a seguinte: f.Read (nmero_de_caracteres_a_ser_lido) f.ReadLine f.ReadAll Ex: f.Read(10) L os 10 primeiros caracteres de um arquivo f.ReadLine L os caracteres restantes de uma linha Texto2 = f.ReadAll L o arquivo inteiro e o coloca na varivel Texto2 Para tentar explicar melhor o que eu quero dizer quando digo posio atual, segue-se um exemplo, salve ele como ex533.vbs. O que ele faz simplesmente abrir um arquivo do tipo texto para leitura e exibir seu contedo na tela.Para rodar estes scripts corretamente, iremos precisar do arquivo VXChimera.txt, que criado com o script ex532.vbs.Eis aqui o cdigo: dim fso,f Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.OpenTextFile("VXChimera.txt",1,false) REM Abre o arquivo VXChimera.txt apenas para letura MsgBox f.Read(5) 'L os cinco primeiros caracteres e mostra na tela MsgBox f.ReadLine REM L o resto da linha a partir do 6 carcter e mostra na tela MsgBox f.ReadAll REM L o resto do texto a partir da 2 linha e mostra na tela f.Close 'Fecha o arquivo VXChimera.txt Voc tambm pode jogar o valor retornado em uma varivel e utilizar depois, se esta for a sua vontade.

Agora para encerrar a parte sobre leitura e edio de arquivos, aqui vai um script para copiar um arquivo texto, usando os conhecimentos adquiridos at o momento.Salve-o como ex534.vbs: dim fso, file, texto, origem, destino, resp, wsh MsgBox "Exemplo 5-3.4",48,"Tutorial de VBS" resp = MsgBox ("Copiar arquivo ?",36,"Exemplo 5-3.4") If resp = 6 Then origem = InputBox("Caminho e nome do arquivo a ser copiado:") If origem <> "" Then REM PRIMEIRA PARTE DA COPIA DO ARQUIVO Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.OpenTextFile(origem,1,false) texto = f.ReadAll 'Copia os dados do arquivo de origem f.Close 'Fecha o arquivo de origem REM SEGUNDA PARTE DA COPIA, REFERE-SE AO DESTINO MsgBox "Se o arquivo destino no existir ele ser criado",64 MsgBox "Se o arquivo destino existir ele ser sobrescrito",64 Do destino = InputBox("Caminho e nome do arquivo destino:") Loop Until destino <> "" REM TERCEIRA PARTE A COPIA PROPRIAMENTE DITA Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.OpenTextFile(destino,2,true) f.Write texto 'Escreve os dados no arquivo de destino f.Close 'Fecha o arquivo de destino REM QUARTA PARTE, FINALIZANDO TUDO MsgBox "Arquivo "& origem &" copiado com sucesso",64,"Tutorial de VBS" resp = MsgBox("deseja abrir a cpia ?",36) If resp = 6 Then Set wsh = CreateObject("Wscript.Shell") wsh.Run destino End If End If End If

Apndice

A Operadores Aritmticos
A seguir segue uma tabela contendo todos os operadores aritmticos em VBS, explicando o que eles fazem: Operador + * / \ mod ^ Nome Adio Subtrao Multiplicao Diviso Diviso Diviso Potenciao Tabela de Operadores Aritmticos Descrio Soma dois nmeros Subtrai dois nmeros Multiplica dois nmeros Divide dois nmeros e retorna um nmero real Divide dois nmeros e retorna um nmero inteiro Divide dois nmeros e retorna o resto da diviso Faz a potenciao de 2 nmeros Exemplo 14 + 21 7 - 7 4 * 6 10 / 4 10 \ 4 15 mod 4 2^10 Resultado 35 0 24 2,5 2 3 1024

B Utilizando variveis do tipo Array


Array o que conhecemos como matriz.As matrizes, ou arrays, servem para armazena vrias informaes de um tipo em uma nica varivel. Os array podem ser de: - uma dimenso, que lembra muito um caderno, pois as informaes esto colocadas cada uma em sua respectiva linha. - duas dimenses, que lembram basicamente uma tabela do excel, pois as informaes so salvas em linhas em colunas. J tendo dado uma breve explicao sobre o que uma matriz(para saber mais sobre matrizes consulte um bom livro de algoritmo e lgica de programao), vamos mostrar como trabalhar com ela no VBScript.Para se declarar um array em VBS utilizamos o seguinte modo: Dim [nome da varivel](ndice1[, ndice2]), [...] Ex: Dim matriz(5), A(2,2) Dim chimera(5,10) Os exemplos acima criam trs matrizes: a matriz(5) uma matriz de uma dimenso, com 5 linhas; A matriz A(2,2) uma matriz de duas dimenses, tendo 2 linhas e 2 colunas, com ela possvel armazenar at 4 informes; E por ltimo temos a matriz chimera(5,10) que uma matriz de duas dimenses, possuindo 5 linhas e 10 colunas, com isso me possvel armazenar at 50 informaes nesta varivel. Para melhor fixar o uso de array, veja um script onde o usurio vai entrar 5 valores em uma matriz, ele vai adicionar dois a cada elemento desta matriz e jogar o resultado em outra matriz, e por fim exibir o resultado desta matriz na tela.Salve-o como apendB1.vbs: Dim A(5),B(5), i 'Declara as matrizes de uma dimenso A e B For i = 0 to 4 'Contador que vai de 0 at 4 A(i) = inputbox("Entre com um valor:") REM o primeiro elemento de uma matriz sempre o de indice 0 next For i = 0 to 4 B(i) = A(i) + 2 'Joga para matriz B os valores da matriz A + 2 next For i = 0 to 4 msgbox B(i) next 'Exibe os valores contidos na matriz B

C Como criar suas prprias funes


Depois de ter criado e rodado alguns scripts, voc provavelmente deve ter repetidos alguns trechos de cdigos, creio que voc usou a famosa tcnica milenar ninja do CTRL+C e CTRL+V, mas e se ao invs disso podemos criar um trecho de cdigo que rode sempre que quisssemos, isso chamamos de funo. isso que vamos fazer, vou mostrar como criar suas funes.Como voc j deve saber, funes sempre retornam uma resposta (um valor) podendo ser um texto, palavra ou algum valor.Mas vamos ao que importa a estrutura de uma funo: Function nome da funo([parmetros]) (Bloco de instrues) [Exit Function] (Bloco de instrues) End Function O local definido por parmetro responsvel por receber algum dado que deva ser passado para a funo, esse dado poder ser usado normalmente pela funo, voc pode usar uma outra varivel para passar a informao sem se preocupar que ela perca o valor nela embutido. A instruo Exit function tem por objetivo encerrar a funo mesmo antes dela chegar ao seu final.Funciona exatamente igual exit do da estrutura while. Ex: Function bem_vindo(valor) MsgBox Bem vindo,,Chimera If valor = 1 then Exit function End if MsgBox um prazer te conhecer ! Bem_vindo = true End function O exemplo acima declara a funo bem_vindo que tem a varivel valor para receber um dado como parmetro. Se na hora em que chamarmos o cdigo, ns chamarmos assim bem_vindo(1), ele ir exibir uma mensagem de bem vindo e terminar a funo. Mas, se chamarmos a funo bem_vindo passando como parmetro qualquer outro valor diferente de 1, ele ir exibir tambm a mensagem um prazer te conhecer ! antes de finalizar a funo. Para retornar algum valor pela funo, basta usar o nome da funo como se fosse uma varivel e faze-la receber o valor que ele deve retornar. Vamos fazer um script bem simples que apresenta apenas uma frase sempre que ele for chamado.Salve-o como apendC1.vbs: chimera() 'Chama a funo chimera msgbox "Leia mais duas vezes..." chimera() 'Chama a funo chimera chimera() 'Chama a funo chimera function chimera() 'Declara a funo MsgBox "Tutoria de VBS - Chimera",,"Brascow" Chimera = 1 'Faz a funo retornar o valor 1 End function