Criando meus scripts: parte 1 de 3

Vinicius Canto

Oi pessoal!

Depois do meu primeiro artigo, que tinha uma visão geral do que é possível de ser feito usando o Windows Scripting Host, vou começar uma série de 3 artigos dando dicas iniciais pra quem quer escrever seus próprios scripts.

Trata-se de um tutorial básico, sem muitas explicações sobre lógica de programação em geral. Embora seja bem simples, é recomendável que você leitor tenha alguns conhecimentos sobre programação, ainda que básicos. Coisas simples como estruturas de repetição (for, do while) e controle de fluxo (if... then... else) serão usados nos próximos artigos.

Bom, vamos lá!

O que eu preciso pra começar a escrever meus scripts?

Você vai precisar somente de um editor de textos e do Windows Scripting Host instalado na máquina. Como foi comentado no último artigo, este é o interpretador dos scripts, ou seja, o programa que vai ler o código escrito e executar as ações.

Desde o Windows 98, o WSH é instalado por padrão nas máquinas, e assim não é necessário instalar nada para que o script funcione. No entanto, existem versões diferentes do WSH, e é interessante ter a mais atual instalada para que todos os recursos funcionem normalmente.

A versão mais recente é a 5.6, que é instalada automaticamente com o Windows XP. Existem pacotes de instalação no site da Microsoft na Web para que usuários de Windows 9x e 2000 possam atualizar o interpretador do WSH. No link abaixo você encontra mais informações de quais recursos existem em cada versão:

https://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/wsorigettingstarted.asp

Mas que programa eu uso para escrever scripts? Com qual extensão eu salvo?

Resposta: nenhum programa em especial. Qualquer editor serve para criar scripts, desde que você salve o texto sem formatação e troque a extensão do arquivo para .VBS. É isso que vai informar o Sistema Operacional que ele deve usar o Wscript.exe ao invés do Notepad.exe para abrir arquivos de texto simples.

Eu particularmente uso o WordPad e o Bloco de Notas para escrever scripts, principalmente o primeiro, que permite mais atalhos de teclado que o segundo. O Word, que faz parte do Microsoft Office também serve.

Para depurar o código, temos duas opções: o Microsoft Script Debugger, que é pequeno (700kb), leve e gratuito. É bem limitado quanto aos recursos, mas é um bom começo para quem está aprendendo a depurar código.

Recentemente descobri que o Visual Studio 2003 também trabalha com depuração de scripts, da mesma forma que o MSD, mas com alguns recursos a mais. Para ajudar quem tiver o VS2003 e quiser treinar, vou escrever um artigo sobre ele nos próximos dias.

Um exemplo inicia

Nada melhor do que um pequeno exemplo com explicação passo a passo para entender como funciona um script usando a linguagem VBS.

Dim strNome
Dim intIdade
Dim intResultado

strNome = "Vinicius"
intIdade = 19
intResultado = msgbox("Olá, meu nome é " & strNome & " e tenho " & intIdade & " anos.")

Vamos por partes. As três primeiras linhas são declarações de variáveis, um procedimento necessário para que ele aloque um espaço na memória correspondente ao tipo de dado que vai ser armazenado (número inteiro, texto ou seqüência de caracteres, numero real, etc). Embora isso não seja obrigatório no WSH, é uma boa prática de programação. Quanto aos nomes das variáveis, cabe ao programador escolher. É um costume também colocar nas primeiras letras de uma variável o tipo de dado dela, para tornar o código mais fácil de ser compreendido por outros programadores.

Na quarta e quinta linha dois valores são atribuídos às variáveis que foram criadas anteriormente. Note que a primeira, por ser uma seqüência de caracteres (ou string), deve aparecer entre aspas.

Na quinta linha (que apareceu em duas por falta de espaço, mas deveria ser em uma única linha), usamos o que chamamos de função. Trata-se de uma função que recebe parâmetros, efetua uma operação e devolve um valor de saída.

Primeiramente, veja mais detalhes sobre a função usada no link abaixo:

https://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vtoriFunctions.asp

A função msgbox é uma função interna da linguagem VBScript. Ela recebe uma string como parâmetro (o que está entre parênteses) e mostra ela dentro de uma pequena caixa de texto.

Uma função pode receber nenhum, um ou vários parâmetros, desde que sejam separados por uma vírgula. No exemplo acima, apenas um parâmetro foi passado para a função, que foi o texto "Olá, meu nome é Vinicius e tenho 19 anos". Veja que para usar o conteúdo das variáveis no meio do texto, a string foi "quebrada" em pedaços e foi "unida" pelo símbolo &. Além disso, cada "pedaço" do texto quebrado teve que receber aspas no inicio e no fim do trecho. Isso é obrigatório quando queremos trabalhar com strings. O & serve para concatenar strings na linguagem VBScript.

Como foi dito anteriormente, as funções devolve um valor. No link acima, temos a referência da função, e há uma tabela idêntica a essa que está abaixo:

Constant

Value

Button

vbOK

1

OK

vbCancel

2

Cancel

vbAbort

3

Abort

vbRetry

4

Retry

vbIgnore

5

Ignore

vbYes

6

Yes

vbNo

7

No

Essas são as constantes de retorno da função msgbox. Isto significa que a função retorna um valor diferente para cada ação tomada pelo usuário. Ou seja, se o usuário pressionar o botão Sim (constante vbYes) que aparecer na tela, a variável intResultado irá receber o valor 6.

A função ainda tem alguns parâmetros opcionais, que são explicados com mais detalhes na página que foi citada acima. Podemos personalizar o título da janela, os botões que serão mostrados, o tipo de janela e o botão padrão.

Veja abaixo um exemplo que mostra com detalhes como analisar o valor de retorno da função msgbox:

Dim intOpcao
intOpcao = msgbox("Você está entendendo o artigo sobre WSH?",vbYesNo)
if intOpcao = vbNo then 
   msgbox "Ok, vamos melhorar a explicação então..."
end if

No trecho acima, temos alguns itens novos. Um deles é um segundo parâmetro na função msgbox, que é uma constante interna do VBScript chamada vbYesNo que tem o valor 4. Conforme a explicação que encontramos na referencia das funções que está no link acima, esse é um parâmetro opcional que usamos para escolher quantos e quais botões irão aparecer na janela.

Outra novidade é a instrução If.. then... else, que serve para execução condicional. Com ela, podemos executar o segundo msgbox somente se a variável intOpcao receber o valor 4 (ou a constante vbNo).

O uso da função msgbox é importante, visto que é um dos principais meios de entrada de dados dos scripts VBS. Raramente é usada em scripts de logon, mas sim em scripts que serão executados manualmente pelo administrador.

Funções internas do VBScript e WSH

Usando funções e métodos podemos manipular dados e executar as tarefas mais diversas. Só para exemplificar um pouco, existe um método chamado MapNetworkDrive pertencente ao objeto Wscript.Network cuja finalidade é mapear unidades de rede.

Não posso listar todas, muito menos comentar sobre elas. São muitas, cada uma com uma finalidade diferente. Mas deixo dois links muito bons sobre o assunto, sendo um o original direto do site da MSDN na Microsoft e outro de um site brasileiro, com explicações traduzidas.

https://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vtoriVBScript.asp

http://www.supertrafego.com/ms_funcoes_asp.asp

Além dessas, há as funções existentes somente no WSH, que serão comentadas futuramente. Entretanto, se quiser conferir agora mesmo, o link está abaixo:

https://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vtoriMicrosoftWindowsScriptTechnologies.asp

O que eu posso fazer com isso que eu aprendi até agora?

Pra ser sincero, pouca coisa. Isso porque a parte mais interessante do WSH é a possibilidade de expandir as capacidades dele usando outros objetos COM e, assim, tornar quase todas as tarefas possíveis. Mas é uma pequena introdução para quem quer começar a escrever seus próprios scripts. Nos próximos artigos, estarei abordando com mais detalhes como usar os objetos do WSH e como procurar informações sobre eles na Internet.

Abraço e até a próxima,

Vinicius Canto - MCP on Windows 2000 Server
C. da Computação USP/São Carlos - SP - Brasil

Contato: scripterbr@gmail.com