Exportar (0) Imprimir
Expandir Tudo
Expandir Minimizar

Criando meus scripts: parte 2 de 3

Vinicius Canto

Olá pessoal,

Após um longo tempo sem escrever, aqui está mais um artigo sobre scripting. É a segunda parte de uma pequena introdução para administradores de rede e outras pessoas que queiram aprender a automatizar suas tarefas. E prometo não demorar tanto para escrever mais...

Funções, Subrotinas e Métodos

No final do primeiro artigo da série, comentei sobre algumas funções internas e sobre o método chamado MapNetworkDrive. Agora vou explicar com um pouco mais detalhes o que é e como isso funciona.

Uma Subrotina nada mais é do que uma parte do código que é executada separadamente. Você cria uma subrotina, escreve algumas linhas de código dentro delas e apenas "chama" a subrotina onde quiser que aquele código seja executado.

Esta é apenas uma definição simples, apenas para ilustrar como funciona. Traçando um paralelo com os arquivos de lote do MS-DOS, seria como usar a instrução GOTO, mas de forma mais inteligente e com outras vantagens.

A primeira vantagem é a reutilização do código, como já foi comentado anteriormente. Uma subrotina criada no início do script pode ser utilizada quantas vezes forem necessárias, mudando apenas os parâmetros que são passados para ela.

As funções são semelhantes às subrotinas, mas devem retornar um valor, como se fossem funções matemáticas mesmo. Você fornece um ou mais valores de entrada (sim, os parâmetros!), a função os processa e devolve um resultado, que pode ser uma variável numérica, texto, objeto, etc.

O exemplo mais clássico de função é a função interna msgbox que usamos no último artigo. O valor de retorno daquela função é o botão que o usuário vai pressionar na caixa de diálogo, que é um número inteiro e foi "guardado" na variável intResultado.

Também já foi comentado que você pode criar suas subrotinas e funções para executar tarefas personalizadas, assim como as funções internas. Isto é útil em algumas situações, que veremos logo adiante.

Para criarmos uma subrotina, digitamos a palavra-chave Sub, seguida do nome da subrotina dos seus parâmetros, entre parênteses. Nas linhas logo abaixo vem o código que queremos que seja executado quando a subrotina for chamada. Note que os parâmetros passados na primeira linha são os nomes de variáveis dentro da subrotina. Para finalizar a subrotina, usamos as palavras End Sub.

Tomemos uma subrotina como exemplo. Ela recebe um caminho de uma pasta qualquer do sistema e lista o tamanho de todos os arquivos existentes nela:

Sub listaArquivos(strPath)
   Dim f
   
   set objFSO = Wscript.CreateObject("Scripting.FilesystemObject")
   set objFolder = objFSO.Getfolder(strPath)
   for each objFile in objFolder.Files
      Wscript.Echo objFile.Name & ": " & objFile.Size
   next
End Sub

listaArquivos("c:\windows")

Vocês devem ter notado que o script acima é um pouco mais difícil de ser compreendido que os anteriores. Há alguns elementos que não foram apresentados ainda, e alguns conceitos sobre orientação a objetos que ainda serão apresentados. Veja o que acontece em cada linha.

Da primeira até a oitava linha temos a definição de uma subrotina chamada listaArquivos. Na primeira linha ainda podemos notar que a subrotina recebe como parâmetro uma variável chamada strPath, que, neste caso, é o nome que foi dado para o caminho da pasta a ser analisada.

Nota: os nomes listaArquivos e strPath são apenas identificadores, de uma subrotina e de uma variável. O nome delas em si, você escolhe. No meu script, procurei seguir alguns padrões, por exemplo, colocando o tipo da variável de forma abreviada no inicio do nome dela.

Na segunda e terceira linhas criamos os objetos objFSO e objFolder. Estes são os objetos que serão usados para acessar e obter informações sobre a pasta e os arquivos que ela possui. Na terceira linha ainda utilizamos um método (imagine que ele é igual a uma função) chamado GetFolder, que recebe como parâmetro o caminho de uma pasta, neste caso representado pela variável strPath e retorna um objeto que nada mais é do que a associação entre a pasta no disco e a linguagem de programação, para que possamos manipulá-la. Este objeto é um objeto do tipo Folder, que possui diversas propriedades e outros métodos. No fim deste artigo há links com tudo que há no objeto FilesystemObject.

Na quinta, sexta e sétima linhas temos uma estrutura que chamamos comumente de loop. Trata-se de um for each ... next que executa a sexta linha para cada objeto da coleção de arquivos existentes naquela pasta que foi "associada" anteriormente. Esta sexta linha contém a função msgbox No nosso exemplo, seu parâmetro é objFile.Name & ": " & objFile.Size , que gera um resultado parecido com este:

Cc668481.Criandoscripts_p201(pt-br,TechNet.10).jpg

Name é uma propriedade do objeto objFile que representa o nome do arquivo. Este texto é concatenado com os dois pontos e em seguida com a propriedade Size, também do objeto objFile. Este objeto é alterado a cada iteração do loop for each..next. Tudo isso é passado como um parâmetro para o método Echo, que serve para mostrar a mensagem na tela.

Ah, aqui está o link para quem quiser saber mais sobre a instrução for each.

http://msdn.microsoft.com/library/en-us/script56/html/vsstmForEach.asp

Orientação a objetos

Como o VBScript é uma linguagem de programação orientada a objeto, podemos aumentar e muito as possibilidades de tarefas que podem ser feitas com script.

Um exemplo bem simples é o próprio objeto WSH.Network, citado no exemplo do artigo anterior. Ele possui funções próprias para trabalhar com rede em geral, como por exemplo criar ou excluir um drive mapeado de rede, obter o endereço IP de uma conexão ou mesmo obter o nome de usuário logado no computador no momento da execução do script.

Podemos também utilizar objetos de automação dos programas instalados, como o próprio Microsoft Office. Você pode, por exemplo, ler uma tabela do Excel usando script e usar os dados contidos nela pra desempenhar uma tarefa qualquer, como criar contas de usuário no Active Directory.

Um objeto nada mais é do que uma variável que representa um item qualquer, seja ele um arquivo, uma pasta, um disco, um usuário no servidor, um programa sendo executado no sistema, etc.

E cada objeto possui características próprias armazenadas em variáveis (chamamos de propriedades). Um exemplo é a propriedade Name do objeto objFile no exemplo dado.

Objetos também podem ter ações associadas a eles (o que chamamos de métodos). Um exemplo de método do objeto objFile é o método Delete, ou então o método Move. Neste caso, o arquivo representado pela variável objFile seria apagado ou então movido para outra pasta.

Um resumo simples para administradores que não querem se interessar por programação: métodos são funções e propriedades são variáveis. A única diferença é que os métodos e propriedades pertencem a um determinado objeto.

Mas como funciona isso tudo? Para ficar mais simples, copiei um slide de uma palestra sobre Windows Scripting Host que ocorreu na Microsoft, dia 13 de Maio. O link para o download da apresentação está no site do Technet Brasil.

Cc668481.Criandoscripts_p202(pt-br,TechNet.10).gif

Links Adicionais

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

Com o conteúdo deste artigo, já é possível ao menos compreender como funciona alguns scripts do ScriptCenter. O que muda entre eles é qual objeto é chamado, o que ele retorna e quais são suas propriedades e métodos.

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

Isso foi útil para você?
(1500 caracteres restantes)
Agradecemos os seus comentários
A Microsoft está realizando uma pesquisa online para saber sua opinião sobre o site do MSDN. Se você optar por participar, a pesquisa online lhe será apresentada quando você sair do site do MSDN.

Deseja participar?
Mostrar:
© 2014 Microsoft