Incluindo outros arquivos com VBScript: ScriptControl e arquivos .WSF

Olá,

recentemente respondi uma dúvida interessante no Fórum do Technet Brasil. Um usuário perguntou se era possível incluir código de outro script em um script .VBS. Respondi inicialmente que sim, e mandei um código meu, que usei em um pseudo-sistema que criei para "emular" um perfil em um ambiente configurado com perfil móvel obrigatório.

O código que enviei está logo abaixo:


'para carregar seu vbs, apenas use essa funcao
sub load(strfile)   'strfile é a string com o nome do arquivo
  Set f = fso.OpenTextFile(strfile)
  constantes =   f.ReadAll
  f.close
  execute constantes
end sub


'rotina principal
load("z:\scripts\config\config.txt")

É simples. Eu criei a função load, que recebe um caminho de arquivo, abre, lê o conteúdo inteiro dele e o executa. Só isso. Aparentemente, deveria funcionar...

Depois de muito testar, descobri que eu estava errado. Eu não sabia que meu código não funcionava com qualquer tipo de instrução, uma vez que meu sistema usava somente definição de constantes, e não com execução de código propriamente dito, que era o que o usuário pediu.

Diante disso, me retratei e disse que a única saída era usar arquivos WSF, que nada mais são do que arquivos de script, mas em formato XML. Ele fornece algumas funcionalidades interessantes, mas como leva mais tempo pra escrever um XML do que um arquivo simples em VBScript, acabo por usar sempre a segunda opção. Veja mais informações sobre os arquivos WSF aqui.

Hoje, lendo artigos sobre Powershell, me deparei com um recurso interessante: o Script Control. Ele foi criado inicialmente para permitir que programadores adicionassem recursos de scripting nas suas aplicações. O que eu percebi é que ele pode ser usado tanto no Powershell para executar código VBScript diretamente quanto no próprio VBScript para importar arquivos .VBS. Curioso, não?

Veja mais informações nos dois links abaixo:

http://www.microsoft.com/technet/scriptcenter/topics/winpsh/convert/inputbox.mspx

http://www.microsoft.com/mind/0799/script/script.asp

Respondendo à pergunta do Fórum: é possível sim, e de uma forma rápida!

Até mais!

Categorias dessa postagem: , ,

Comentários