domingo, 20 de dezembro de 2009

Tutorial de VBS - Visual Basic Script

Introdução

Os arquivos de script do Windows Scripting Host (VBScript) podem ser criados em qualquer editor de texto simples, como o notepad.exe e apresentam sempre a extensão *.vbs. VBS é uma linguagem de script, como BATCH e HTML e não uma linguagem de programação como C++ ou Assembly.
Os arquivos *.vbs são executados pelo programa wscript.exe, que é instalado junto com o Windows, e não apresentam nenhuma janela ou ícone enquanto são executados.
Para finalizar um script *.vbs em execução é preciso encerrar o processo wscript.exe, através das teclas "CTRL+ALT+DEL" e na aba "finalizar processo", através do comando "taskkill / f /im wscript.exe" pelo menu "Executar" ou por meio da linha de comando do MS-DOS.

Criando Variáveis

Ao se trabalhar com VBScript é preciso configurar o wscript.exe para executar as tarefas de acordo com um padrão, o que é feito através da função "Set":


Ex.:


Set fso=CreateObject("Scripting.FileSystemObject")

Nessa função, a variável "fso" é atribuída a uma constante do sistema, nesse caso "CreateObject("Scripting.FileSystemObject")", assim toda vez que o "wscript.exe" encontrar a expressão "fso", ele vai atribuir a função específica que foi predefinida.


Ex.:

fso.copyfile "C:\texto.doc", "C:\Windows\texto.doc"

Nesse exemplo o chamada "fso" seguida do comando "copyfile" mais o caminho dos arquivos de origem e de destino, executa a tarefa de copiar um arquivo para outro diretório.

Existem inúmeras variáveis predefinidas pelo "wscript.exe", bastando apenas ao programador configurá-las.


Ex.:

Set ws=CreateObject("WScript.Shell")
ws.run "notepad.exe"


Esse exemplo configura a variável "ws" como objeto do "Shell" do Windows, podendo-se executar programas através do "run" e do aplicativo, nesse caso o "notepad.exe".


Manipulando Arquivos

Com VBScript também é possível criar, copiar, mover, deletar e modificar atributos de arquivos, o que possibilita a automatização de tarefas simples do Windows.


Ex.:

Set fso=CreateObject("Scripting.FileSystemObject")
fso.copyfile wscript.scriptfullname,"C:\"


Nesse exemplo o VBScript se autocopia para o disco "C:\" usando o comando "fso.copyfile" e a constante "wscript.scriptfullname", que designa o arquivo atual, além do caminho de destino do arquivo.


Set fso=CreateObject("Scripting.FileSystemObject")
Set arq=fso.createtextfile("C:\teste.txt")
arq.write "Esse é um arquivo de texto criado pela função fso.createtextfile"

arq.close

Aqui o VBScript cria o arquivo "teste.txt" com o uso da função "fso.createtextfile" no disco "C:\", pra escrever no arquivo usa-se a expressão "arq.write" e no fim, usa-se "arq.close" para que o arquivo não fique aberto pelo Windows.



Tratando Erros

Nos exemplos anteriores, qualquer erro encontrado pelo VBScript encerra a execução do arquivo, por isso é importante configurar o wscript.exe para ignorar possíveis erros e prosseguir na execução. Isso é feito com o uso da expressão "On Error Resume Next", instruindo o VBScript a continuar em caso de erro.


Ex.:

On Error Resume Next
Set fso=CreateObject("Scripting.FileSystemObject")
fso.copyfile "C:\texto.txt","C:\teste.txt"


Ao usar a função "On Error Resume Next" se o arquivo "texto.txt" não existir, o wscript.exe simplesmente ignora o erro e prossegue da linha seguinte.



Inserindo Comentários

Os comentários em scripts .VBS são feitos com o uso de apóstrofos (') a cada linha.


Ex.:

'Esse é um comentário padrão em VBScript
On Error Resume Next
'Cada linha de comentário exige um apóstrofo (')
Set fso=CreateObject("Scripting.FileSystemObject")
fso.copyfile "C:\texto.txt","C:\teste.txt"



Interagindo com o Usuário

A principal forma de interagir com os usuários é a partir de mensagens em caixas de texto.
É possível configurar o texto, o título e o ícone que aparecerá na caixa de mensagem.


Ex.:

MsgBox "Bom Dia" ,64, "VBScript"

Na primeira parte do "MsgBox" se coloca a mensagem que vai aparecer na caixa de texto.

Na segunda parte, separada por vírgulas, configura-se o ícone que vai aparecer na caixa de texto, que pode ser um dos seguintes valores:


16 ou VBCritical = Mensagem de erro
32 ou VBExclamation = Mensagem de alerta
48 ou VBQuestion = Mensagem de questão
64 ou VBInformation = Mensagem de informação

Na terceira parte insere-se o texto que vai aparecer como título da caixa de texto.



Recebendo Informações Externas

Semelhante ao "MsgBox", o controle "InputBox" permite ao usuário inserir informações como o seu nome ou idade para que o VBScript interaja com ele.


Ex.:

InputBox "Digite seu nome:"

O exemplo acima solicita ao usuário que insira seu nome em um campo de texto.



Do ... Loop

Para executar um VBScript por várias vezes subseqüentes, costuma-se usar as funções "Do" e "Loop", de forma que sempre que o wscript.exe encontra um "Loop" retorna ao início da função, no caso o "Do".


Ex.:

Do
MsgBox "Bom Dia" ,64, "VBScript"
Loop


Obs.: O uso do "Loop" pode atrapalhar na execução do código do script, uma vez que, no exemplo acima, a única forma de encerrar o "MsgBox" seria finalizando a tarefa "wscript.exe".



If..., Then..., Else..., End If.

O uso da condição "If", encontrada em quase todas as linguagens de programação, torna possível a execução de determinadas funções se o retorno à condição for satisfatório. Caso a condição não seja verdadeira, usa-se o "Else" para determinar a ação do VBScript.


Ex.:

If day(now) = 24 And month(now) = 12 Then
MsgBox "Hoje é Natal" ,64, "VBScript"
Else
MsgBox "Hoje não é Natal" ,16, "VBScript"
End If


Note que a função é construída a partir das condições "day(now)" e "month(now)" que determinam o dia da execução da "MsgBox". Se o dia não for o definido pela função, o código salta para a condição seguinte, que preenche os requisitos de "Else".
Note que a função "If" sempre termina com o ponteiro "End If", informando que o uso da string termina ali.



And, Or


No exemplo acima, você viu o emprego da função "And".
Essa função serve como condição adicional á "If", sendo traduzido da seguinte forma:
Se hoje é dia 24 "e" mês 12 então...


If day(now) = 24 "And" month(now) = 12 Then

Ou seja, se a primeira variável for verdadeira e a segunda variável também então...


A função "Or" serve como condição opcional á "If".
Se hoje é dia 24 ou mês 12 então...


If day(now) = 24 "Or" month(now) = 12 Then

Ou seja, se a primeira variável ou a segunda variável for verdadeira então...



Usando Constantes de Sistema


Para realizar operações matemáticas, como adição e subtração, o VBScript utiliza sinais pré-definidos como "+" (mais), "-" (menos), "=" (igualdade), ">" (maior que) e "<" (menor que).


Ex.:

MsgBox 5+7 ,VBinformation, "VBScript"

Repare que no exemplo acima a soma é feita sem o uso de aspas, para que o "MsgBox" retorne o resultado da equação "5+7". Se fossem usadas aspas o valor retornado pelo "MsgBox" seria "5+7" e não "12".

Existem muitas outras funções em *.vbs, e muitas aplicações para essa linguagem de scripts, que pode ser integrada em páginas HTML de modo a enriquecer o conteúdo exibido, ou facilitar tarefas comuns.