2. Os contextos de execução do VBSCRIPT
2.1. Introduction
Um programa vbscript não é executado diretamente no Windows, mas sim num contentor que lhe fornece um contexto de execução e um determinado número de objetos que lhe são próprios. Além disso, o programa VBScript pode utilizar objetos disponibilizados pelo sistema Windows, objetos esses denominados ActiveX.
![]() |
Neste documento, utilizaremos dois contentores: o Windows Scripting Host, comummente designado por WSH, e o navegador Internet Explorer, por vezes designado a seguir por IE. Existem muitos outros. Assim, as aplicações do MS-Office são contentores para um derivado do VB denominado VBA (Visual Basic for Applications). Existem, além disso, numerosas aplicações do Windows que permitem aos seus utilizadores ultrapassar os limites do sistema, permitindo-lhes desenvolver programas que se executam no seio da aplicação e que utilizam os objetos próprios da mesma.
O contentor no qual o programa VBScript é executado desempenha um papel fundamental:
- Os objetos disponibilizados ao programa VBScript pelo contentor variam de um contentor para outro. Assim, o WSH disponibiliza a um programa VBS um objeto denominado WScript que permite aceder, por exemplo, às partilhas e impressoras de rede do computador anfitrião. Por sua vez, o IE disponibiliza ao programa VBS um objeto denominado document, que representa a totalidade do documento HTML que está a ser visualizado. O programa VBS poderá então atuar sobre esse documento. O Excel, por sua vez, disponibiliza a um programa VBA objetos que representam pastas de trabalho, folhas de cálculo, gráficos, etc... na verdade, todos os objetos manipulados pelo Excel.
- Embora os objetos de um contentor proporcionem todo o seu potencial a um programa VBScript, por vezes podem limitar certas funcionalidades. Assim, um programa VBScript executado no navegador IE não pode aceder ao disco da máquina anfitriã, por razões de segurança.
Por isso, quando se fala de programação em VBScript, é necessário indicar em que contentor o programa é executado.
No Windows, o VBScript não é a única linguagem utilizável nos contentores WSH ou IE. É possível, por exemplo, utilizar o JScript (=JavaScript), o PerlScript (=Perl), o Python, etc. Muitas destas linguagens parecem, à primeira vista, superiores ao VBScript. No entanto, este último possui vantagens significativas:
- O VB e as suas variantes VBSCRIPT e VBA são muito comuns em computadores Windows. Conhecer esta linguagem parece indispensável.
- É mais a quantidade de objetos que um programa pode utilizar do que a linguagem por si utilizada que determina o seu poder. Ora, muitos desses objetos são fornecidos pelos contentores e não pelas próprias linguagens.
Uma desvantagem do VBSCRIPT é que não é portátil para um sistema que não seja o Windows, por exemplo, o Unix. Os seus concorrentes, como o JavaScript, o Perl e o Python, são-no. Se for necessário trabalhar em sistemas heterogéneos, pode ser interessante, ou mesmo indispensável, utilizar a mesma linguagem nos diferentes sistemas.
2.2. O contentor WSH
O contentor WSH (Windows Scripting Host) permite a execução, no ambiente Windows, de programas escritos em várias linguagens: vbscript, javascript, perlscript, python, ... Existe uma norma a respeitar para que uma linguagem possa ser utilizada no WSH. Qualquer linguagem que cumpra esta norma é candidata à execução no WSH. É possível imaginar que a lista anterior de linguagens executáveis no WSH venha a aumentar. Um contentor disponibiliza aos programas que executa objetos que lhes conferem o seu verdadeiro poder. Isto tende a esbater as diferenças entre as linguagens, uma vez que todas passam a utilizar o mesmo conjunto de objetos. Utilizar uma linguagem em vez de outra pode, assim, tornar-se uma simples questão de preferência, em vez de desempenho.
A execução de um programa no WSH é feita com a ajuda de dois executáveis: wscript.exe e cscript.exe. O wscript.exe encontra-se normalmente no diretório de instalação do Windows, geralmente denominado %windir%:
C:\ >echo %windir%
C:\WINDOWS
C:\>dir c:\windows\wscript.exe
WSCRIPT EXE 123 280 19/09/01 11:54 wscript.exe
L'exécutable cscript.exe se trouve lui sous %windir%\command :
C:\>dir c:\windows\cscript.* /s
Répertoire de C:\WINDOWS\COMMAND
CSCRIPT EXE 102 450 26/06/01 17:49 cscript.exe
O «w» de wscript significa windows e o «c» de cscript significa console. Um script pode ser executado tanto pelo wscript como pelo cscript. A diferença reside na forma como as mensagens são apresentadas no ecrã:
- o wscript apresenta-as numa janela
- o cscript exibe-as no ecrã
Eis um script coucou.vbs que exibe coucou no ecrã:
![]()
Abramos uma janela DOS e executemo-lo sucessivamente com wscript e cscript:

DOS>cscript coucou.vbs
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. Tous droits réservés.
coucou
Como se pode ver acima, a diferença entre os dois modos é clara. Neste documento, utilizaremos quase exclusivamente o modo de consola cscript. Este é o modo adequado para as aplicações denominadas «batch», ou seja, aplicações sem interação do utilizador através do teclado. É de salientar dois aspetos nos resultados anteriores:
- Partimos do princípio de que os executáveis wscript.exe e cscript.exe se encontravam ambos no diretório «PATH» da máquina, o que permite executá-los simplesmente digitando os seus nomes. Se não fosse esse o caso, teria sido necessário escrever aqui:
- Note-se que a versão do wsh utilizada neste exemplo e no resto do documento é a versão 5.6.
- O ficheiro fonte do script tem a extensão .vbs. Esta é a extensão que designa um script vbscript, sendo que um script javascript é designado pela extensão .js.
O programa cscript dispõe de várias opções de execução, que se obtêm ao executar o cscript sem argumentos:
O argumento //nologo suprime a exibição do banner do wsh:
2.3. A forma de um script WSH
Acabámos de ver um primeiro script: coucou.vbs
![]()
Indicámos que o sufixo .vbs do ficheiro designava um script vbscript. Não se trata de uma obrigação. Poderíamos ter colocado o script num ficheiro com o sufixo .wsf, na seguinte forma mais complexa:

A execução deste script resulta no seguinte:
Um script WSH pode misturar linguagens:

A execução deste script resulta no seguinte:
Retemos os seguintes pontos:
- O contentor WSH não está associado a nenhuma linguagem. Um script wsh pode misturar linguagens num ficheiro com a extensão .wsf
- O script é, então, delimitado pelas balizas <job id="..."> ... </job>
- No interior da aplicação (=job), as linguagens utilizadas pelas diferentes partes do código são delimitadas por <script language="...."> .... </script>
- Esta linguagem de marcação tem um nome: XML, que significa eXtended Markup Language. A XML não define quaisquer balizas, mas sim regras de disposição das balizas. Assim, neste caso, deveríamos dizer que a linguagem de marcação utilizada num script wsh segue a norma XML.
Posteriormente, utilizaremos exclusivamente VBScript em ficheiros .vbs.
2.4. O objeto WSCRIPT
O contentor WSH disponibiliza aos scripts que executa um objeto denominado wscript. Um objeto possui propriedades e métodos:
![]() |
Um objeto Obj possui propriedades Pi que definem o seu estado. Assim, um objeto thermomètre pode ter uma propriedade température. Esta propriedade é um dos aspetos do estado do termómetro. Outro aspeto poderia ser a temperatura máxima Tmax que ele consegue suportar.
O objeto Obj pode ter métodos Mj que permitem que agentes externos:
- conhecer o seu estado
- alterar o seu estado
Assim, o nosso termómetro, se for eletrónico, poderia ter um método allumer que o ligasse, outro éteindre que o desligasse e outro afficher que exibisse a temperatura de equilíbrio assim que esta fosse atingida. Em termos de programação, um método é uma função que pode aceitar argumentos e devolver resultados.
Em VBScript, as propriedades Pi de um objeto Obj são designadas por Obj.Pi e os métodos Mj são designados por Obj.Mj. O objeto wscript de WSH é um objeto importante pelos métodos que disponibiliza aos scripts. Assim, o seu método echo permite exibir uma mensagem. A sintaxe deste método é a seguinte:
Os valores dos argumentos argi são então apresentados numa janela (execução via wscript) ou no ecrã (execução via cscript no DOS).
2.5. O contêiner Internet Explorer
Referimos anteriormente que o Internet Explorer pode funcionar como um contentor para um script VBScript. Vamos demonstrá-lo com um exemplo simples. Segue-se uma página HTML (HyperText Markup Language) denominada coucou2.htm que não contém nenhum script VBScript.
21

O seu carregamento direto pelo Internet Explorer (Fichier/Ouvrir) apresenta os seguintes resultados:
![]() |
O conteúdo do ficheiro coucou2.htm mostra-nos que o HTML é uma linguagem de marcação. Conhecer a linguagem HTML é conhecer estas balizas. Estas têm como principal objetivo indicar ao navegador como apresentar um documento. O HTML não segue exatamente a norma XML, mas está próximo dela.
No coucou2.htm, há duas informações a apresentar, identificadas como 1 e 2. Também as apresentámos na visualização que foi feita. Foi a baliza <title>...</title> que fez com que a informação 1 fosse colocada na barra de título do navegador e a baliza <body>..</body> que fez com que a informação 2 fosse colocada na área do documento do navegador.
Não aprofundaremos mais a análise da linguagem HTML. Vamos modificar o ficheiro coucou2.htm, introduzindo-lhe um script VBScript, e renomeá-lo agora para coucou1.htm:

O script VBScript foi colocado na baliza <head>...</head>. Poderia ter sido colocado noutro local. Exibe «coucou» no carregamento inicial da página. Neste caso, o navegador tem de ser o Internet Explorer, pois só este navegador é, por predefinição, um contentor para scripts VBScript. A exibição obtida é então a seguinte:

seguido da apresentação normal da página:

O script executado foi o seguinte:
![]()
Enquanto o contentor WSH disponibilizava ao script um objeto denominado wscript, que permitia efetuar exibições com o seu método echo, aqui o IE disponibiliza ao script um objeto window que permite efetuar exibições com o método alert. Assim, para exibir «coucou», escreve-se wscript.echo «coucou» em WSH e window.alert «coucou» em IE. Também é possível demonstrar aqui que, na verdade, é possível utilizar várias linguagens no contentor IE. Retomamos o exemplo já apresentado em WSH no seio de uma página coucou3.htm:

Ao carregar esta página através do IE, são exibidas, em primeiro lugar, três janelas de informação:
![]() | ![]() | ![]() |
antes de apresentar a página final:

2.6. A ajuda do WSH
WSH inclui um sistema de ajuda que se encontra normalmente na pasta «C:\Program Files\Microsoft Windows Script\ScriptDocs». Para a versão 5.6 do WSH, o ficheiro de ajuda chama-se «SCRIPT56.CHM». Basta clicar duas vezes neste ficheiro para aceder à ajuda. Pode ser prático ter um atalho no ambiente de trabalho.
Depois de iniciado, aparece algo semelhante ao seguinte:

Aqui encontra-se a ajuda do contentor WSH, mas também a ajuda para as linguagens VBScript e JavaScript. Trata-se de uma ferramenta indispensável tanto para o principiante como para o programador experiente. Existem várias formas de trabalhar com esta ajuda:
- não sabemos bem o que procuramos. Queremos simplesmente descobrir o que está disponível. A secção Sommaire acima pode então ser utilizada. Podemos, por exemplo, ver o que está disponível para VBScript:

Na ajuda do VBscript, irá descobrir muitas informações que não constam neste documento.
- Pode procurar algo específico, por exemplo, a forma de utilizar a função msgbox do VBscript. Nesse caso, utilize o separador Rechercher:

A ajuda apresenta todos os tópicos relacionados com a palavra pesquisada. Em geral, os primeiros tópicos sugeridos são os mais relevantes. É o que acontece aqui, em que o primeiro tópico sugerido é o correto. Basta clicar duas vezes nele para aceder à informação desse tópico:






