22
Tutorial de VbScript Chimera ® 1995-2006 BrasCow / Kdex [email protected] / [email protected] É loucura ser sábio quando a ignorância é a alegria de todos!

Tutorial de VBS Chimera

Embed Size (px)

Citation preview

Page 1: Tutorial de VBS Chimera

Tutorial de VbScript

Chimera ® 1995-2006

BrasCow / Kdex [email protected] / [email protected]

É loucura ser sábio quando a ignorância é a alegria de todos!

Page 2: Tutorial de VBS Chimera

TUTORIAL DE VBS – Visual Basic Script

Introdução

Depois de navegar um pouco pelo google, tentando encontrar algum material sobre VBScript, e não encontrar nenhuma apostila ou tutorial sobre tal assunto, resolvi criar meu próprio tutorial. O objetivo deste tutorial é auxiliar alguém que queira começar a aprender VBS, mas para isso é necessário que a pessoa tenha ao menos um conhecimento básico de lógica de programação. É importante lembrar que VBScript pode ser usado em páginas da internet, assim como Java script.

Mas, o vbs também 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 extensão .vbs, você pode escrever os scripts no bloco de notas e para testar basta dar dois cliques no arquivo salvo. Declarando variáveis

Variável é tudo aquilo que está sujeito a modificações e em programação são elas que guardam os dados, sejam eles entrados pelo usuário ou não.Para se declarar uma variável em VBS deve se utilizar o seguinte modo:

DIM [nome da variável], [nome da variável], [...]

Ex: DIM nome, idade, top, contador, dia

Declarando constantes

Constantes é tudo aquilo que não está sujeito a modificações, na programação são semelhantes as variáveis com a diferença de que os dados armazenados nela não mudam durante todo o programa, elas são sempre inicializadas com algum valor (dado), e eles não são entrados pelo usuário.Para se declarar uma constante faça do seguinte modo:

Const [nome da constante] = [dado]

Ex: CONST nome = “Kdex” CONST ano = 2005 CONST MinhaString = “Isto é uma string” 1 – Começando o básico

Vamos começar 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 código a seguir e salve como ex10.vbs:

MsgBox "Alô Mundo!",,"Exemplo 1-0"

Page 3: Tutorial de VBS Chimera

1.1 – O comando MsgBox

O comando MsgBox tem por objetivo exibir uma janela contendo uma mensagem ou alguma informação. Sua estrutura sempre será:

MsgBox (mensagem [,botões][,título])

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 botões os valores dos botões ou as constantes do mesmo, assim como feito no segundo exemplo. Segue a seguir a lista dos botões que podem ser utilizados em conjunto com o comando MsgBox:

Constante Valor Descrição

VbOKOnly 0 Mostra apenas o botão OK.

VbOKCancel 1 Mostra os botões OK e Cancel.

VbAbortRetryIgnore 2 Mostra os botões Abort, Retry, e Ignore.

VbYesNoCancel 3 Mostra os botões Yes, No, e Cancel.

VbYesNo 4 Mostra os botões Yes e No.

VbRetryCancel 5 Mostra os botões Retry e Cancel.

VbCritical 16 Exibe o ícone de Critical Message. (Mensagem critica).

VbQuestion 32 Exibe o ícone de Warning Query.(É uma interrogação).

VbExclamation 48 Exibe o ícone de Warning Message.(exclamação).

VbInformation 64 Exibe o ícone de Information Message.(É um i)

Faça alguns testes antes de prosseguir adiante com os estudos.

Valores de Retorno

Constante Valor Descrição

vbOK 1 Botão OK foi pressionado.

vbCancel 2 Botão Cancel foi pressionado.

vbAbort 3 Botão Abort foi pressionado.

vbRetry 4 Botão Retry foi pressionado.

vbIgnore 5 Botão Ignore foi pressionado.

vbYes 6 Botão Yes foi pressionado.

vbNo 7 Botão No foi pressionado.

Page 4: Tutorial de VBS Chimera

A tabela a cima indica os valores que são retornados quando algum botão 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 código 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 código

Comentários são trechos do código que não são lidos, ou seja, eles não são 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 serão explicados a seguir:

REM comentário

‘ comentário

A diferença entre os dois está no momento em que eles são utilizados, o comando REM é utilizado apenas no começo de uma linha e serve para fazer comentários sobre o script que passou ou que virá, ou ainda dar alguma informação adicional.Já o ‘ (apostrofo) pode ser colocado em qualquer lugar da linha e tudo após ele será ignorado, geralmente é usado para explicar o que aquela linha de código faz exatamente.

Ex: REM Código feito por membros do chimera MsgBox "Aloha milord" 'Exibe uma mensagem de boas vindas 2 – Interagindo com o usuário

O exemplo a seguir, irá fazer uma pergunta para o usuário e dependendo do que ele responder será mostrada uma janela diferente.Copie o código 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) então MsgBox "Então 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 código:

�Na primeira linha: é feita a declaração da variável resposta, que tem por objetivo armazenar o valor da resposta escolhida.

�Já na segunda linha: a variável resposta recebe o valor do botão pressionado, por isso ela está assim resposta = MsgBox. Se o botão pressionado for SIM ou YES, a variável resposta irá receber o valor 6. Mas,

Page 5: Tutorial de VBS Chimera

se o botão pressionado for NÃO ou NO, a variável resposta irá receber o valor 7.Para ver o valor devolvido por outros botões consulte a tabela Valores de Retorno (parte 1.1).

� Entre a linha 3 e 7 se encontra o código que nos interessa, o código responsável pela exibição das mensagem dependendo da resposta.

2.1 – Estrutura de decisão (If... Then... Else)

Estrutura de decisão como o próprio nome já diz servem para tomar uma decisão, quero dizer, fazer coisas diferentes de acordo com a situação. A instrução If... Then... Else, servem para isso e podem ser traduzidas como Se... Então... Senão.Usando o exemplo ex20.vbs ele faz o seguinte: �Na linha 3 ele verifica se o botão pressionado foi sim, neste caso ele compara o valor contido na variável resposta com 6(que é o valor retornado caso seja clicado em sim). �Se (If) a verificação for verdadeira, isto é, se foi pressionado o sim, então (Then) o script executa a linha 4, senão (Else) executa a linha 6.

A estrutura do comando If é a seguinte:

If condição1 Then [Bloco de instruções] [Else If condição-n Then

[Bloco de instruções 2]]... [Else [Bloco de instruções para senão]] End If

Ex: If 2 = 2 Then 'Se 2 é igual a 2 então MsgBox "Esta condição é verdadeira!" Else 'Se não MsgBox "Esta condição é falsa!" End if 'Fim se, indica o final do trecho de decisão. If 3 >= 6 Then 'Se 3 é maior ou igual a 6 então MsgBox "Esta condição é verdadeira!" Else 'Se não MsgBox "Esta condição é falsa!" End if 'Fim se, indica o final do trecho de decisão. Explicando a estrutura, enfim:

Condição é uma comparação 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 condições e um exemplo rápido de cada um:

Tabela de Operadores Operador Nome Exemplo Resultado Exemplo Resultado

= Igual 3 = 3 Verdadeiro 14 = 21 Falso <> Diferente 7 <> 2 Verdadeiro 7 <> 7 Falso > Maior 91 > 0 Verdadeiro 4 > 6 Falso < Menor 51 < 69 Verdadeiro 55 < 33 Falso >= Maior ou igual 13 >= 13 Verdadeiro 18 >= 13 Verdadeiro <= Menor ou igual 21 <= 25 Verdadeiro 42 <= 41 Falso

Page 6: Tutorial de VBS Chimera

Pegue um dos exemplos da tabela e troque com a condição apresentada nos exemplos a cima, para testar.

Bloco de instrução é o conjunto de instruções ou comandos que o script deve executar caso a condição seja verdadeira.

Bloco de instruções para senão é o conjunto de instruções que o script irá executar caso a condição testada seja falsa.

End if é usado para fechar, terminar, a estrutura de decisão If. Agora faça um script que diga que irá formatar o computador, e tenha como opções os botões OK e CANCEL. Se o usuário escolher OK ele deve exibir uma janela dizendo que o usuário é corajoso, se não deve dizer que ele é covarde.A solução 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 usuário e armazena-lo em uma variável.Este geralmente é o nome, idade, nascimento do usuário ou qualquer outra coisa.

InputBox (mensagem [,título][,resposta padrão][,posição X] [,posição Y])

Ex: InputBox "Qual é a sua idade?", "Pergunta", "16 anos", 200,200 InputBox "Que música você gosta?", "Duvida", "Rock" InputBox "Qual é o seu nome?", "Pergunta"

Agora irei mostrar um script que recebe o nome do usuário e lhe desejas boas vindas.Copie-o e salve como ex22.vbs:

Dim nome nome = InputBox ("Qual é a seu nome?", "Duvida", "Usuário") MsgBox "Seja bem vindo, " & nome,,"Exemplo 2-2"

O caractere “&” tem como função 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 usuário 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 contrário deverá ser exibido uma mensagem de acesso negado.o nome será “root” e a senha será “admin”.

Page 7: Tutorial de VBS Chimera

Uma das soluções possíveis está a seguir e usa do que chamamos de estrutura de decisão encadeada, para saber mais sobre está estrutura aconselho a leitura de uma apostila de lógica de programação.

Dim nome,senha nome = InputBox ("Entre com seu nome :", "Login", "Usuário") 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 repetição

Estrutura de repetição, ou laço de repetição, é aquela responsável por repetir um pedaço do código por um certo número de vezes ou até que uma condição 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 – Laço de repetição (For... Next)

A instrução For... Next pode ser traduzido como Para... e próximo.Esta instrução é usada quando queremos repetir certo trecho do código por um número de vez já determinado, como podemos ver no exemplo ex30.vbs.

For variável = valor_inicial to valor_final [Step incremento] (Bloco de instruções) [End For] (Bloco de instruções) 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 começo For X = 1 to 10 'Para X vá de 1 até 10 MsgBox "Só está linha será executada",,X End For 'Termina a execução do laço For... Next MsgBox "Isto não vai ser mostrado" Next

Page 8: Tutorial de VBS Chimera

Tudo que for escrito entre For e Next será repetido pelo número de vezes que for decidido, a não ser que seja encontrada a instrução End For que por sua vez encerra o laço de repetição. A finalidade de Step, quando aparece, é o de decidir em qual velocidade o laço 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 opção Step faça um script que mostre apenas os cinco primeiros números pares. Salve o script como ex31.vbs. A solução está logo a seguir:

Dim I For I = 2 to 10 Step 2 'Para I vá de 2 até 10, mas de 2 em 2 MsgBox I,,"Exemplo 3-1" Next

3.2 – Laço de repetição (While... Wend)

Esta instrução tem por objetivo repetir um trecho do código enquanto uma condição for verdadeira.Esta instrução pode ser traduzida como Enquanto... Prossiga.A sua estrutura é a seguinte:

While condição (Bloco de instruções) 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 condição for verdadeira, assim que for considerada falsa a instrução While é encerrada. Agora para um exemplo iremos fazer um script que irá exibir tudo o que o usuário digitar dentro InputBox, e só irá parar de repetir o trecho quando o usuário digitar “sair”.Salve o exemplo como ex32.vbs:

Dim texto While texto <> "sair" texto = InputBox ("Digite alguma coisa:","Tutorial de VBS - Chimera") MsgBox texto,,"Exemplo 3-2" Wend

3.3 – Laço de repetição (Do... Loop)

A instrução Do... Loop faz exatamente o mesmo que outros Laços de repetição, repete um determinado trecho do código, denominado aqui como bloco de instruções.A diferença desta instrução, que pode ser traduzida como Faça... Volta, está no fato de ela poder se repetir até que a condição seja verdadeira ou enquanto ela for verdadeira.

Page 9: Tutorial de VBS Chimera

Há mais diferenças nesta instrução: uma delas é fato de não ser obrigado a colocar uma condição; outra diferença desta estrutura está no fato de ela possuir duas estruturas diferentes.Em uma a condição é declarada no inicio, na outra no fim.Vejamos a estrutura, então:

Do [{While | Until} condição] (Bloco de instruções) [Exit Do] (Bloco de instruções)

Loop Do

(Bloco de instruções) [Exit Do] (Bloco de instruções)

Loop [{While | Until} condição]

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 condições 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 diferença entre os dois modos, está no fato de que se a declaração da condição é feita no inicio, dependendo do código que o precede, o trecho entre Do e Loop pode chegar a não ser executado.Mas, se fizer a declaração de condição no final, ela será executada ao menos uma vez. Apenas para constar o “until” da instrução quer dizer “até que”.Sobre como usar a estrutura Do... Loop sem usufruir de condição, o modo de utiliza-lo é o mesmo, mas você deve por um comando Exit Do dentro do código para finalizar o laço. Como exemplo iremos fazer um script, sem declarar uma condição na estrutura, que irá se repetir até que o usuário não digite nada.Salve este exemplo como ex33.vbs:

Dim nome Do nome = InputBox("Para sair não digite nada", "Exemplo 3-3")

If nome = "" Then Exit Do

End If Loop

Page 10: Tutorial de VBS Chimera

Para praticar tente fazer alguns script, eis aqui uma idéia:

1- Faça um script que tente descobri a idade do usuário, chutando todas as alternativas.Obs: ele deve chutar uma por vez e permite que o usuário diga se ele acertou ou não.

Uma das soluções possível é essa:

Dim numero, resp 'Declara as variáveis numero = 0 'Inicializa a variável numero com o valor 0 Do numero = numero + 1 'Incrementa a variável numero em 1 resp = MsgBox ("Você tem "&numero&" anos?",VbYesNo,"Tutorial de VBS") IF resp = 6 Then 'Se a resposta for afirmativa então Exit Do 'Termina o laço de repetição End if Loop MsgBox "Acertei...hahaha",48, "Tutorial de VBS - Chimera"

4 – Algumas funções do VBScript

Antes de começar a falar sobre algumas funções de VBScript, devo explicar o que é exatamente uma função.Funções são rotinas, bloco de instruções, preestabelecidas que executam uma determinada tarefa.Um fator importante a se destacar sobre funções é o fato de elas sempre retornarem alguma coisa (texto, valor, etc.). Desde o inicial deste tutorial você tem usado funções sem ao menos saber que o estava fazendo.As instruções MsgBox e InputBox são funções, pois ambas retornam um valor.Na função MsgBox o valor retornado é o valor numérico do botão pressionado, já na função InputBox o valor retornado é o que foi digitado pelo usuário. Tendo entendido isto, podemos partir para mostrar algumas funções do VBS, não iremos ver todas, apenas as quais eu considero importante.

4.1 – Funções Chr e Asc

Está duas funções trabalham basicamente com o código ASCII.A diferença entre cada uma delas é: Chr: retorna o caractere associado com o seu código especifico de caractere. Asc: retorna o código de caractere correspondente a primeira letra da string (conjunto de caractere). A estrutura é esta a seguir:

Chr(código de caractere)

Asc(conjunto de caractere)

Ex: Meu_Numero = Asc(”A”) ‘Retorna o valor 65. MinhaLetra = Chr(97) ‘Retorna o caractere a. Meu_Numero = Asc(”?”) ‘Retorna o valor 63. MinhaLetra = Chr(62) ‘Retorna o caractere >. Meu_Numero = Asc(”Anne”) ‘Retorna o valor 65. MinhaLetra = Chr(37) ‘Retorna o valor %.

Page 11: Tutorial de VBS Chimera

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 código e analise-o.

Dim letra, resposta, numero MsgBox "Script para descobrir o código 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 – Funções Int e Fix

Está duas funções trabalham basicamente com números reais, fracionários.O que elas fazem é transformar um número fracionário em inteiro.A diferença entre elas aparece apenas quando se trabalha como um número negativo: Int: quando trabalha com número negativo arredonda para baixo. Fix: quando trabalha com número negativo arredonda para cima. A estrutura é esta a seguir:

Int(número real) Fix(número real)

Ex: MeuNumero = Int(99.8) ' retorna o valor 99. MeuNumero = Fix(99.2) ' retorna o valor 99. MeuNumero = Int(-99.8) ' retorna o valor -100. MeuNumero = Fix(-99.8) ' retorna o valor -99. MeuNumero = Int(-99.2) ' retorna o valor -100. MeuNumero = Fix(-99.2) ' retorna o valor -99.

Page 12: Tutorial de VBS Chimera

A partir de agora as coisas começam ficar interessantes, podemos classificar o que virá adiante como nível intermediário (esta é apenas a minha definição).Depois de você já ter visto o básico, vamos começar 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 gráfica para o usuário.

Atributos - São as características do objeto, como cor e tamanho, a janela, por exemplo, tem atributos como o modelo, tamanho, abertura simples ou dupla, entre outros.

Definição extraída de “a Bíblia 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 explicação rápida sobre o que acontece quando se executa este Script:

�Na segunda linha é feita a declaração da variável que irá receber objeto Wscript.Shell, o responsável por rodar o bloco de notas.

�Na terceira linha a variável wsh recebe o objeto Wscript.Shell, por meio do comando set e createobject.

�Na quarta linha utilizamos o comando Run da variável wsh, que recebeu por ser, agora, o objeto Wscript.Shell.

5.1 – A instrução Set

A instrução set (conjunto) serve para ligar uma variável a um objeto (conjunto de propriedades e funções).Ele geralmente vêm acompanhado de outra instrução na mesma linha, a instrução CreateObject, que veremos adiante.A estrutura do comando Set é:

Set (variável) = (expressão 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 é necessário que se declare as variáveis que serão usadas no comando Set;

Alguns objetos possuem dentro de si mesmo outros objetos, como veremos mais adiante, e estes podem ser apontados para outras variáveis.

Page 13: Tutorial de VBS Chimera

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 variável, 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 variável wsh. A partir de agora, sempre que quisermos nos referir ao objeto Wscript.Shell iremos usar a variável wsh (poderia ser outra variável 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 possível rodar um programa qualquer. O comando Run funciona semelhante a caixa de executar do windows, com ele também é possível abrir arquivos não executáveis, desde que colocadas as devidas extensões, e até mesmo pastas.

Wsh.Run (arquivo a ser executado)

Ex: Wsh.run ("wordpad.exe") Wsh.run ("command.com") Wsh.run ("C:\windows") Wsh.run ("C:\windows\wplog.txt")

Devo lembrar que se o arquivo que for ser executado não se encontra na pasta atual e nem no PATH de diretórios do windows, local onde o windows procura pelo programa a ser executado, você precisará especificar também o caminho do arquivo a ser executado. Agora irei mostrar um script que deverá funcionar como se fosse a própria 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.

Page 14: Tutorial de VBS Chimera

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 “\”, então se trata de uma chave do registro, caso contrário 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 conteúdo. 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 abreviações para as chaves principais do registro.As abreviações são as seqguintes:

Constante Chave

HKCU HKEY_CURRENT_USER

HKLM HKEY_LOCAL_MACHINE.

HKCR 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 endereço “http://www.vxbrasil.com”. Colocaremos também 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.

Page 15: Tutorial de VBS Chimera

O próximo script irá ler os valores que colocamos no registro e exibir para que nós possamos ver. Para que o script rode corretamente é necessário ter rodado o exemplo anterior, e que não 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 não seja necessário explicar, as variáveis valor1 e valor2 são 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 é necessário ter rodado o exemplo anterior, e que não se tenha apagado a chave nem os valores criado por ele, ou seja, se for roda-lo duas vezes, é necessário que se rode o ex5220.vbs de novo.Veja o código 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 também 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 conteúdo MsgBox "Chave e valores deletados",64,"Exemplo 5-2.2-3"

5.3 – O objeto FileSystemObject

O objeto filesystemobject é repleto de propriedades, funções 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 variável da seguinte maneira:

Ex: Dim fso Set fso = CreateObject("Scripting.FileSystemObject")

A linha a cima, cria o objeto FileSystemObject e o liga a variável fso. A partir de agora, sempre que quisermos nos referir ao objeto FileSystemObject iremos usar a variável fso (poderia ser outra variável 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:

Page 16: Tutorial de VBS Chimera

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 código é a fonte" f.Close

Rode o script e veja que ele cria uma arquivo texto com o nome de VXChimera.txt.A única explicação que considero necessária 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 variável 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 variável são iguais a este, então não 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 variável para que ele possa ser trabalhado, ou caso este arquivo não 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 parâmetro 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 diferenças são listados à seguir:

Constante Valor Descrição

ForReading 1 Abre o arquivo apenas para leitrura, você não pode escrever nele.

ForWriting 2 Abre o arquivo apenas para escrever você não pode ler deste arquivo.

ForAppending 8 Abre o arquivo para escrever no final do arquivo, última linha. Se for utilizado o valor 2 como opção de modo, o arquivo existente, caso haja, será apagado e sobrescrito.Então tome muito cuidado ao usar o valor 2.

O parâmetro criar indica se o arquivo pode ou não ser criado caso ele não exista.O valor padrão para este item é False, caso o arquivo não exista ele não será criado, mas se você indicar True o arquivo será criado se já não existir.

Page 17: Tutorial de VBS Chimera

Já a opção formato nos mostra como arquivo será aberto, se vai ser aberto em formato ASCII ou unicode, o padrão para esta opção é usar o formato padrão do sistema operacional.Os valores para esta opção são:

Constante Valor Descrição

TristateUseDefault -2 Abre o arquivo usando o padrão do sistema.

TristateTrue -1 Abre o arquivo em formato unicode.

TristateFalse 0 Abre o arquivo em formato ASCII.

Veja um exemplo apenas para ilustrar este tópico, 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 edição 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 diferença entre eles é a seguinte:

- Write � Escreve um texto especifico em na linha atual - WriteLine � Escreve um texto na linha atual e passa para a próxima - WriteBlankLines � Insere n linhas em branco

A estrutura desses comandos é:

f.Write mensagem f.WriteLine mensagem f.WriteBlankLines (número_de_linhas)

Ex: f.Write “Kdex do Chimera” f.WriteLine “Tutorial de VBS” f.WriteBlankLines(5)

O “f” mostrado aqui em cima é uma variável que foi ligada a um objeto do tipo file(arquivo) pelo comando fso.opentextfile.Usei a variável f por ser uma abreviação de file (arquivo em inglês), mas poderia ser outra variável.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 próxima" 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:

Page 18: Tutorial de VBS Chimera

Constante Valor Descrição

vbCrLf Chr(13) & chr(10) Simula um <ENTER> no notepad.

vbNewLine Chr(13) & chr(10) Cria uma nova linha igual a vbCrLf.

vbNullChar Chr(0) String com valor 0, mas diferente de (“”)

vbTab Chr(9) Simula o pressionamento de <TAB>.

Estas constantes também podem ser usadas nos comandos InputBox e MsgBox, como também pode ser usadas em qualquer variável 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 são: - Read � Lê um número específico de caracteres a partir da posição atual, e se posiciona na posição do caractere seguinte; - ReadLine � Lê o resto da linha a partir da posição atual, e se posiciona no inicio da próxima linha; - ReadAll � Lê o resto de todo o texto a partir da posição atual, e posiciona no final do texto.

É importante lembrar que estes comandos na verdade são funções, pois todos eles retornam um valor, que neste caso é o próprio texto lido. A estrutura destes comandos é a seguinte:

f.Read (número_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 variável Texto2

Para tentar explicar melhor o que eu quero dizer quando digo posição 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 conteúdo na tela.Para rodar estes scripts corretamente, iremos precisar do arquivo VXChimera.txt, que é criado com o script ex532.vbs.Eis aqui o código:

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ê também pode jogar o valor retornado em uma variável e utilizar depois, se esta for a sua vontade.

Page 19: Tutorial de VBS Chimera

Agora para encerrar a parte sobre leitura e edição 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 não 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 cópia ?",36) If resp = 6 Then Set wsh = CreateObject("Wscript.Shell") wsh.Run destino End If End If End If

Page 20: Tutorial de VBS Chimera

Apêndice

A – Operadores Aritméticos A seguir segue uma tabela contendo todos os operadores aritméticos em VBS, explicando o que eles fazem:

Tabela de Operadores Aritméticos Operador Nome Descrição Exemplo Resultado

+ Adição Soma dois números 14 + 21 35 - Subtração Subtrai dois números 7 - 7 0 * Multiplicação Multiplica dois números 4 * 6 24 / Divisão Divide dois números e

retorna um número real 10 / 4 2,5

\ Divisão Divide dois números e retorna um número inteiro

10 \ 4 2

mod Divisão Divide dois números e retorna o resto da divisão

15 mod 4 3

^ Potenciação Faz a potenciação de 2 números

2^10 1024

Page 21: Tutorial de VBS Chimera

B – Utilizando variáveis do tipo Array Array é o que conhecemos como matriz.As matrizes, ou arrays, servem para armazena várias informações de um tipo em uma única variável. Os array podem ser de: - uma dimensão, que lembra muito um caderno, pois as informações estão colocadas cada uma em sua respectiva linha. - duas dimensões, que lembram basicamente uma tabela do excel, pois as informações são salvas em linhas em colunas. Já tendo dado uma breve explicação sobre o que é uma matriz(para saber mais sobre matrizes consulte um bom livro de algoritmo e lógica de programação), vamos mostrar como trabalhar com ela no VBScript.Para se declarar um array em VBS utilizamos o seguinte modo:

Dim [nome da variável](índice1[, índice2]), [...]

Ex: Dim matriz(5), A(2,2) Dim chimera(5,10) Os exemplos acima criam três matrizes: a matriz(5) é uma matriz de uma dimensão, com 5 linhas; A matriz A(2,2) é uma matriz de duas dimensões, tendo 2 linhas e 2 colunas, com ela é possível armazenar até 4 informções; E por último temos a matriz chimera(5,10) que é uma matriz de duas dimensões, possuindo 5 linhas e 10 colunas, com isso me possível armazenar até 50 informações nesta variável. Para melhor fixar o uso de array, veja um script onde o usuário 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 dimensão 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) 'Exibe os valores contidos na matriz B next

Page 22: Tutorial de VBS Chimera

C – Como criar suas próprias funções

Depois de ter criado e rodado alguns scripts, você provavelmente deve ter repetidos alguns trechos de códigos, creio que você usou a famosa técnica milenar ninja do CTRL+C e CTRL+V, mas e se ao invés disso podemos criar um trecho de código que rode sempre que quiséssemos, isso chamamos de função. É isso que vamos fazer, vou mostrar como criar suas funções.Como você já deve saber, funções sempre retornam uma resposta (um valor) podendo ser um texto, palavra ou algum valor.Mas vamos ao que importa a estrutura de uma função:

Function nome da função([parâmetros]) (Bloco de instruções) [Exit Function] (Bloco de instruções) End Function

O local definido por parâmetro é responsável por receber algum dado que deva ser passado para a função, esse dado poderá ser usado normalmente pela função, você pode usar uma outra variável para passar a informação sem se preocupar que ela perca o valor nela embutido. A instrução Exit function tem por objetivo encerrar a função 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 função bem_vindo que tem a variável valor para receber um dado como parâmetro. Se na hora em que chamarmos o código, nós chamarmos assim bem_vindo(1), ele irá exibir uma mensagem de “bem vindo” e terminará a função. Mas, se chamarmos a função bem_vindo passando como parâmetro qualquer outro valor diferente de 1, ele irá exibir também a mensagem “É um prazer te conhecer !” antes de finalizar a função. Para retornar algum valor pela função, basta usar o nome da função como se fosse uma variável 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 função chimera msgbox "Leia mais duas vezes..." chimera() 'Chama a função chimera chimera() 'Chama a função chimera function chimera() 'Declara a função MsgBox "Tutoria de VBS - Chimera",,"Brascow" Chimera = 1 'Faz a função retornar o valor 1 End function