Você está na página 1de 131

354 Projeto 1 ADMINISTRAÇÃO desktop usando VBScript e O WSH

O GetValidPasswd () Função
procedimento final do script, mostrada abaixo, é uma função chamada GetValidPassword (). Seu
trabalho é para exibir a caixa de diálogo pop-up mostrado na Figura 15.8. O script começa definindo
duas variáveis ​localizadas. o strPasswd variável é usada para armazenar a senha que Tom irá digitar
eo strValidPassword variável será usado para armazenar uma variável que a função irá usar para testar
se uma senha válida foi fornecida.

Função GetValidPasswd ()

Dim Dim strPasswd

strValidPassword

strValidPassword = “NÃO”

Do Until strValidPassword = “YES”

'Solicitar uma senha para atribuir à conta

strPasswd = InputBox ( “Digite uma senha para o“& strDskMgtAcct & _ ‘conta e clique em OK.’,

cTitleBarMsg)

Se strPasswd = “” Then

MsgBox “Password Faltando: Você deve digitar um caractere válido 8“& _

“Senha para continuar.”, CTitlebarMsg Else

Se Len (strPasswd) <8 Então

MsgBox “comprimento senha. A senha deve ter, pelo menos, “& _

“8 caracteres”, cTitlebarMsg Else

GetValidPasswd = strPasswd

strValidPassword = “YES” End If End If

laço

End Function
CRIANDO contas de administrador Capítulo 15 355

FIGURA 15.8 Ao invés de senhas incorporar no script, o script é projetado para coletá-los manualmente

UMA Fazer ... Até loop é configurado, que repete até que uma senha válida é fornecida. Ela começa
exibindo uma caixa de diálogo pop-up usando o built-in VBScript Caixa de entrada() função. A senha que é
introduzido é então interrogado para garantir que ele não está em branco (isto é, ou no botão Cancelar
foi clicado ou o botão OK foi clicado sem uma senha a ser digitada).

O comprimento da senha é então verificado para garantir que ele é, pelo menos oito caracteres. Se o
valor atribuído à strPasswd está em branco ou é inferior a oito caracteres, é exibida uma mensagem de
erro e uma nova caixa de diálogo pop-up é exibido para mais uma vez tentar recolher uma senha
válida. Uma vez que uma senha válida é inserida, seu valor é atribuído a GetValidPassword ( uma
variável com o mesmo nome da função), a fim de devolvê-lo à afirmação de que chamado na função
primeiro lugar. Então, para sair do Fazer ... Até circuito, o valor de strValidPassword é definido igual a SIM.

The Script totalmente montado


Todo o script de criação da conta administrativa é montado abaixo. Quando executado, ele irá criar
duas contas de gestão de nível administrativo. Será, então, até Tom lembrar-se de definir a senha
para o ASAT01 conta para nonexpiring, a fim de evitar que a conta de ficar bloqueada, o que impediria
a execução da desfragmentação script.Tom também terá de modificar a tarefa agendada que
executa o script de desfragmentação para executar usando esta conta.

'************************************************* ************************ 'Script Nome: 15.1.vbs script' Autor: Jerry

Ford 'Criado: 03/15/03

'Descrição: Este script cria 2 contas de usuário de nível administrativo.


356 Projeto 1 ADMINISTRAÇÃO desktop usando VBScript e O WSH

'One fornece a Equipe de Suporte de mesa com uma backdoor no computador. 'O outro fornece acesso

suficiente para executar programadas administrativas' scripts.

'************************************************* ************************

'Seção de inicialização

Option Explicit

On Error Resume Next

Const cTitlebarMsg = “Administrativo Criador Conta”

Dim Dim WshShl

intRunStatus Dim Dim

strDskMgtAcct

strSchedAcct

'Instanciar o objeto WshShell

Definir WshShl = WScript.CreateObject ( “WScript.Shell”)

strDskMgtAcct = “ADMA01”

strSchedAcct = “ASAT01”

'Secção de Processamento Principal

'Obter permissão para prosseguir intRunStatus =

CallRunVerification ()

Se intRunStatus = 6 Então

'Chamar o procedimento que cria novas contas CreateAdminAcct

(strDskMgtAcct) CreateAdminAcct (strSchedAcct)

Fim se
CRIANDO contas de administrador Capítulo 15 357

'Terminar roteiro WScript.Quit execução

()

'Secção Procedimento

CallRunVerification função ()

Dim strMsgText

'Mostrar a tela inicial e perguntar ao usuário se ele ou ela quer jogar strMsgText = ‘Este script irá criar o seguinte

nível administrativo’ & _

“Contas de usuário no computador local:” & vbTab & vbCrLf & vbCrLf & _ strDskMgtAcct & “- Uma conta administrativa

do Desktop Management” & vbCrLf & _ strSchedAcct & “- Uma conta de usuário com nível de Administrador usado

para executar tarefas agendadas” & _ vbCrLf & vbCrLf & “você deseja continuar?”

CallRunVerification = MsgBox (strMsgText, 36, cTitlebarMsg)

End Function

Sub CreateAdminAcct (strNewAcctName)

Dim Dim strPasswd

intCmdResult

intCmdResult = 0

strPasswd = GetValidPasswd ()

'Criar nova conta

intCmdResult = WshShl.Run ( “net user“& strNewAcctName & ““& _

strPasswd & “/ add”, 0)

'Adicione a conta ao grupo de administradores locais Se intCmdResult = 0,

em seguida,

intCmdResult = WshShl.Run ( “net localgroup administradores / adicionar“& _


358 Projeto 1 ADMINISTRAÇÃO desktop usando VBScript e O WSH

strNewAcctName, 0) Se intCmdResult

<> 0, em seguida,

MsgBox “Código de erro 2: A criação de contas falhou por“& _

strNewAcctName, cTitlebarMsg Else

MsgBox “A criação de contas de sucesso para“& strNewAcctName, cTitlebarMsg End If Else

Se intCmdResult <> 0, em seguida,

MsgBox “Código de erro 1: Criação de conta falhou por“& _

strNewAcctName, cTitlebarMsg End If End If

End Sub

'Este procedimento cria uma conta de backdoor para o gerenciamento de desktop equipa Função

GetValidPasswd ()

Dim Dim strPasswd

strValidPassword

strValidPassword = “NÃO”

Do Until strValidPassword = “YES”

'Solicitar uma senha para atribuir à conta

strPasswd = InputBox ( “Digite uma senha para o“& strDskMgtAcct & _ ‘conta e clique em OK.’,

cTitleBarMsg)

Se strPasswd = “” Then

MsgBox “Password Faltando: Você deve digitar um caractere válido 8“& _

“Senha para continuar.”, CTitlebarMsg Else

Se Len (strPasswd) <8 Então

MsgBox “comprimento senha. A senha deve ser a “& _

“Menos 8 caracteres”, cTitlebarMsg Else


CRIANDO contas de administrador Capítulo 15 359

GetValidPasswd = strPasswd

strValidPassword = “YES” End If End If

laço

End Function

resumo
Neste capítulo, você revisou os passos que são necessários para criar manualmente novas contas de usuários e

adicioná-los aos grupos. Você também aprendeu como fazer um script a criação de novas contas de usuário, bem

como a forma de adicionar essas contas para grupos. Usando as técnicas apresentadas aqui, você pode começar a

desenvolver uma variedade de scripts de gerenciamento de contas que podem ser usados ​para criar ou modificar

contas de usuário no computador local e um domínio do Windows.


Esta página foi intencionalmente esquerda em branco
PARTE III
Project Professional 2
Esta página foi intencionalmente esquerda em branco
projeto 2
A análise de logs de
aplicação
Projeto 2 Overview
Neste projeto, um programador em Ferramentas Intuit mecânicos foi atribuído a melhorar o processo de

comunicação para um sistema de ordem / inventário desenvolvidas internamente. Usando VBScript, você vai

aprender a desenvolver-se rapidamente uma coleção de scripts que lêem e relatórios de processos criados

pelo sistema de pedidos / inventário, a fim de criar um único relatório de síntese consolidada.

A fim de desenvolver esses scripts, você vai aprender os passos básicos envolvidos no processamento de

entrada de arquivo. Isto incluirá verificar se existem arquivos de entrada antes de tentar trabalhar com eles,

abrir arquivos, e várias técnicas para leitura de arquivos. Você também vai aprender a criar novos arquivos,

como escrever dados para esses arquivos, e como fechar os arquivos quando o script tiver terminado de

trabalhar com eles.

Este projeto também irá mostrar-lhe como realizar operações de gestão de arquivos, como mover e
excluir arquivos. Como você atravessa o desenvolvimento deste projeto, você vai aprender uma série
de novas técnicas de programação, incluindo:

◆ Como ler e definições de configuração processo armazenados em arquivos INI

◆ Como ler e processar o conteúdo do registro formatado e relatório


arquivos

◆ Como criar novos arquivos de texto

◆ Como acrescentar informações para arquivos de texto existentes

◆ Como automatizar programaticamente a execução de VBScripts

◆ Como escrever mensagens no log de eventos do aplicativo do Windows


Capítulo 16
Estudo de Caso: a
análise de logs de
aplicação
T seu capítulo
começa marca como
a observar o início de um
Molly novo estudo
Masterson, de caso
um novo do projeto
programador emem que você vai
Ferramentas Intuit mecânicas, usa
VBScript para melhorar o processo de comunicação para um sistema de ordem / inventário in-house
desenvolvido. Como você trabalha com este capítulo e os quatro capítulos que se seguem, você vai ter a
oportunidade de ver como desenvolver VBScripts que realizam uma série de tarefas, incluindo:

◆ inicialização de processamento ou arquivos INI

◆ Leitura e relatório de análise formatados e arquivos de log

◆ Criando e escrevendo para novos relatórios

◆ a execução do script de agendamento

◆ Gravar mensagens no log de eventos do Windows

◆ Desempenhando gerenciamento arquivo de relatório

Visão Geral do Projeto


Ferramentas Intuit mecânica é uma pequena empresa que fabrica ferramentas mecânicas computadorizados de alta

potência e suprimentos. Seus produtos são comumente usados ​para construir grandes instalações de processamento

químico. A empresa usa um aplicativo ordem / inventário in-house desenvolvido para rastrear todas as vendas de

produtos e retornos. O sistema também controla os níveis de estoque atuais e mantém um log de erro onde as

mensagens do programa e hardware de erro são gravadas. O sistema de ordem / de inventário é uma aplicação

distribuída escrito principalmente em C e C ++.

Infelizmente, as coisas têm sido difíceis para Ferramentas Intuit mecânicos ao longo dos últimos cinco anos.
Embora o número de empresas concorrentes tem crescido constantemente, os lucros têm vindo a diminuir. Como
resultado, muitos dos programadores de aplicativos que desenvolveram sistema de ordem / estoque da empresa
ter deixado a empresa à procura de pastos mais verdes. Hoje, uma equipe limitada de três programadores
permanece, incluindo Molly Masterson.

Devido ao pequeno tamanho do seu grupo, os programadores em Ferramentas Intuit mecânicos são mantidos
muito ocupado. Recentemente as coisas tornaram-se tão ruim que eles começaram a ficar para trás em sua
carga de trabalho. Gestão solicitou que eles olham
PROJETO ESTUDO DE CASO: REGISTROS ANÁLISE DE APLICAÇÃO Capítulo 16 367

maneiras de simplificar suas atividades diárias, a fim de liberar tempo para uma nova aplicação que a empresa

quer desenvolver para um sistema de refrigeração computadorizado. Uma das tarefas diárias que Molly tem

sido designados para realizar é a revisão manual e consolidação todas as manhãs de quatro arquivos de

aplicativos gerados pelo aplicativo ordem / inventário em um relatório para a administração a revisão. Apesar de

não ser particularmente complicado, leva Molly mais de uma hora cada dia para realizar esta tarefa. A fim de

ajudar a simplificar sua carga de trabalho, ela sugeriu automatizar esse processo.

No início, ela pensou sobre como modificar a aplicação in-house, mas decidiu que levaria muito tempo, esforço e

testes para automatizar a funcionalidade que ela estava olhando para a utilização de C e C ++. O que ela quer é

uma maneira rápida e fácil de desenvolver um processo de add-on que ela pode criar com um nível mínimo de

trabalho e que vai ser fácil para outros membros de sua equipe de apoio. Em última análise, ela decidiu que

VBScript é a ferramenta certa para o trabalho. Como os outros programadores em sua equipe, Molly já está um

pouco familiarizado com Visual Basic. Ela acha que sua curva de aprendizado para VBScript será relativamente

pequeno. Ela também sabe que, como uma linguagem de script, o VBScript é bem adequada para desenvolvimento

rápido de aplicações e para o preenchimento de buracos em aplicações que não justificam um monte de tempo de

desenvolvimento (e, portanto, muitas vezes ir desfeita).

Analisando os Logs aplicativo interno


Infelizmente para Molly, embora gestão aprovado seu novo projeto VBScript, eles não tomar qualquer
trabalho fora de sua placa, a fim de proporcionar-lhe mais tempo para trabalhar no projeto. Isso significa
que ela terá que desenvolver a sua solução rapidamente, de modo a não backlog sua carga de trabalho
atual ainda mais. Para começar, Molly decide tomar alguns momentos para documentar o processo
manual existente que ela passa todos os dias. Até o momento ela é feita, Molly quebrou o processo de
análise e consolidação de relatórios do sistema ordem / inventário para baixo nas etapas seguintes.

1. Os relatórios gerados pelo aplicativo pedidos / stocks são criados por 20:00 cada noite. Todas
as manhãs, ela vai para o servidor Windows 2000 em que o aplicativo armazena seu
relatório e arquivos de log.

2. Ela copia cada um dos quatro relatórios em um disquete e faz logoff.

3. Em seguida, ela renomeia cada um destes relatórios, como mostrado abaixo:


368 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

◆ error.log ER-MM-DD-YY.txt
◆ DailySales.txt DS-MM-DD-YY.txt
◆ DailyReturns.txt DR-MM-DD-YY.txt
◆ DailyProduction.txt DP-MM.DD.YY.txt

4. Depois de voltar ao seu próprio ambiente de trabalho, ela abre cada relatório e examina seu conteúdo.

5. Ela começa cortar e colar partes de cada relatório em um novo relatório, que ela salva no disco
rígido do seu computador.

6. Finalmente, ela imprime uma cópia do relatório, que ela coloca na caixa de entrada de Hank, gerente
de operações da empresa.

Além disso, Molly mantém um histórico mínimo de um mês de arquivos de log e relatório. Ela faz isso
entrando no Windows 2000 Server, onde o relatório e arquivos de log residem, no primeiro dia útil de cada
mês e exclusão de todos os outros que não aqueles para os meses atuais e anteriores de arquivos.

Examinando o registro de erros

Como a aplicação ordem / inventário é executado a cada dia, ele relata quaisquer erros hardware ou relacionados com o

software que são encontrados em um arquivo de log chamado Error.log. Este arquivo, um exemplo de que é mostrado na

Figura 16.1, é simplesmente um arquivo de texto simples. Todas as mensagens de erro são compostos de várias peças

de informação, conforme descrito abaixo.

◆ Um carimbo de tempo na forma de HH: MM: SS

◆ Um carimbo de data na forma de MM / DD / AA

◆ Um código de erro no intervalo de 1-5, onde um um indica um erro e grave


a 5 indica um erro informativo
◆ texto da mensagem de forma livre que fornece uma explicação detalhada do erro
PROJETO ESTUDO DE CASO: REGISTROS ANÁLISE DE APLICAÇÃO Capítulo 16 369

FIGURA 16.1 mensagens de erro escritos para Error.log são date- e carimbo de hora e incluem um código de erro e uma
descrição

Quando Molly Comentários de este relatório, ela geralmente parece apenas para erros que foram atribuídos um

código de 1, 2 ou 3 gravidade. Ela então corta e cola esses erros como as primeiras entradas no novo relatório diário

que ela é responsável pela criação.

Examinando o Relatório de vendas diárias


O primeiro relatório que Molly normalmente examina é o relatório diário de Vendas, que é nomeado
DailySales.txt. Um exemplo de um relatório típico DailySales.txt é mostrado na Figura 16.2.

Ao analisar este relatório, Molly copia a informação localizada na parte inferior do relatório no resumo de
vendas por seção número da peça para o seu novo relatório.
370 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

FIGURA 16.2 O relatório diário de vendas consiste em informação detalhada e resumo

Examinando o Relatório retornos diários


Ao rever o relatório retornos diários, um exemplo de que é mostrado na Figura
16,3, Molly se concentra no resumo das informações previsto na parte inferior do relatório. Ela copia
esta informação no relatório de síntese que ela está criando.
PROJETO ESTUDO DE CASO: REGISTROS ANÁLISE DE APLICAÇÃO Capítulo 16 371

FIGURA 16.3 O relatório retornos diários fornece ambos os detalhes de item de linha e uma análise sumária

Examinando o Relatório de Produção Diário


O quarto relatório que Molly Comentários de todas as manhãs é o relatório de produção diária, que é
chamado DailyProduction.txt. Este relatório divide o trabalho de produção do dia anterior em dois grupos
separados, hardware e suprimentos. Molly cópias informação de ambas as seções para o novo relatório
de síntese.

FIGURA 16,4 O relatório de produção diária divide as informações em várias categorias


372 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

Análise de requisitos
A fim de assegurar que a gestão é completamente ciente do escopo do projeto que ela está prestes a
começar e para assegurar que ela tem a sua aprovação completa, Molly decide gerar uma lista de
requisitos que seu projeto iria encontrar. Esta lista é descrito a seguir.

◆ Automatizar o processamento de todos os quatro relatórios de aplicações e arquivos de log

◆ Criar um único arquivo INI que irá armazenar as informações de configuração usado para

controlar a execução dos VBScripts


◆ Criar um único relatório de síntese consolidada

◆ Automatizar a criação de um um mês Relatório e Log File


Arquivo no Windows 2000 Server em que os relatórios são gerados

◆ Completar o desenvolvimento e teste deste novo processo dentro de três


semanas

◆ Vire a responsabilidade pela recuperação do relatório de síntese do


Windows 2000 Server através de operações a fim de remover completamente os programadores de
aplicativos a partir do processo

Depois de completar esta lista, ela e-mails nele para seu chefe para aprovação. Ele, então, encaminha-lo para

Hank, o gerente de operações. Embora hesitante no início, Hank concorda em atribuir a alguém em sua equipe

para a tarefa de recuperar e imprimir o relatório de síntese consolidada. Hank, em seguida, encaminha o e-mail

para o supervisor de operações do turno da noite como notificação de que em poucas semanas, esta tarefa terá de

ser adicionado como um passo para a lista de verificação noturno que a equipe de operações executar no servidor.

Executando uma alta nível de design


Depois de obter a aprovação formal de seu gerente e de Hank, e depois de estudar o processo que ela vai
embora cada dia para gerar o relatório de vendas de resumo para o gerente de operações, Molly começa a
trabalhar em um projeto de alto nível. Ela determina que ela pode realizar sua missão através do
desenvolvimento de uma série de pequenos VBScripts, cada uma das quais será responsável por executar uma
tarefa distinta. Molly então produz uma lista de tarefas que necessitam de ser realizados e agrupa-os em
conjunto, como mostrado na Tabela 16.1.
PROJETO ESTUDO DE CASO: REGISTROS ANÁLISE DE APLICAÇÃO Capítulo 16 373

Tabela Relatório 16,1 Log Analyzer anúncio Consolidação lista de tarefas Tipo de Tarefa

Descrição

arquivo de inicialização Desenvolver um único arquivo INI que irá armazenar as informações de configuração usado para

controlar a execução de scripts que processam cada um o relatório ordem / do sistema de inventário e

arquivos de log. Desenvolver um processo script para configurações de leitura e processamento do

arquivo de configuração INI.

Analisadores de log Desenvolver um log analisador VBScript para ler e processar o conteúdo do arquivo Error.log.

Desenvolver um log analisador VBScript para ler e processar o conteúdo do arquivo

DailySales.txt.

Desenvolver um log analisador VBScript para ler e processar o conteúdo do arquivo


DailyReturns.txt.

Desenvolver um log analisador VBScript para ler e processar o conteúdo do arquivo


DailyProduction.txt.

Programação Script Agendar o script de execução que processa os relatórios e arquivos de log. Agendar a execução

de um VBScript mensal que mantém um arquivo de relatório de um mês de duração e arquivos de

log.

Gestão de Arquivo Desenvolver um VBScript que, quando executado, garante que vale a pena de arquivos
de log e relatório de um mês são mantidos no Windows 2000 Server onde são gerados.

Desenvolvimento e processamento do arquivo de configuração INI


Ao invés de configurações de execução de script de incorporar dentro de cada VBScript que ela vai ser em
desenvolvimento, Molly quer criar um único arquivo INI e armazenar tantas definições quanto possível lá.
Desta forma, algumas das alterações para os scripts que operações um dia poderia pedir dela pode ser feita
modificando o arquivo INI em vez dos scripts. Isso ajudará a fazer alterações na configuração mais fácil de
executar e eliminar oportunidades para a introdução acidental de erros em scripts que teriam que ser editado
manualmente.

Molly ainda está no processo de determinar o formato e conteúdo do arquivo INI exato. Por enquanto, ela
sabe que ela quer criar uma seção no arquivo INI para cada um dos scripts de analisador de log, como
demonstrado na Figura 16.5.
374 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

FIGURA 16.5 Um esboço de como o arquivo INI que Molly está actualmente a desenvolver vai olhar

Como você pode ver, Molly começou a adição de configurações na primeira seção no arquivo INI. Essas
configurações e sua finalidade será abordado em detalhes no Capítulo 17, “Utilizando Arquivos de configuração
para controlar Script Execution”.

A fim de desenvolver um procedimento VBScript para processar o arquivo INI, Molly vai ter que
aprender a trabalhar com o VBScript run-time FileSystemObject. Em particular, ela terá de aprender a
usar um número de seus métodos, incluindo:

◆ O arquivo existe(). Validar se o arquivo INI existe antes de tentar


abra
◆ OpenTextFile (). Trabalhar com o conteúdo do arquivo INI

◆ Leia a linha(). Ler uma linha de cada vez a partir do arquivo INI

◆ Fechar(). Feche o arquivo INI quando feito processá-lo

Criação de Log e Relatório Analisadores


Na primeira Molly brincou com a idéia de criar um único script que poderia processar cada um dos relatórios e
arquivos criados pelo aplicativo ordem / inventário de log. No entanto, as diferenças distintas em cada relatório
faria isso uma tarefa de desenvolvimento complicado, então ela decidiu, em vez de desenvolver um analisador
de log para cada arquivo. Uma vantagem dessa abordagem é que ela pode voltar e modificar um único script
analisador de log sem correr o risco de cometer um erro modificação que iria desativar todos os analisadores de
log. Esta abordagem fornece a maior flexibilidade no caso do relatório e arquivos de log mais tarde crescer em
complexidade e exigem modificações adicionais.
PROJETO ESTUDO DE CASO: REGISTROS ANÁLISE DE APLICAÇÃO Capítulo 16 375

Para o analisador de registo que vai processar o error.log arquivo, Molly quer ser capaz de ler o relatório e

para ser capaz de retirar erros com base em seus códigos de erro. Ela planeja usar o arquivo INI para

especificar o nível de alertas que serão relatados por diante. Por enquanto, ela planeja relatar apenas no

nível 1, 2 ou 3 mensagens de erro. Os analisadores de relatório para o DailySales.txt e DailyReturns.txt

relatórios será quase idêntico. Ambos irão por padrão, somente extrair resumo divulgação de informações
conforme especificado pelas configurações armazenadas no arquivo INI. No entanto, os analisadores de
relatório para esses dois arquivos também será concebido para apoiar a extração de informações detalhadas
caso seja necessário. Por padrão, o analisador relatório que irá processar o DailyProduction.txt arquivo será
criado para consolidar e relatar a informação detalhada localizados tanto na Hardware e seções suprimentos.
No entanto, modificando a configuração localizado em sua seção do arquivo INI, Molly pode limitar relatórios
a secções tanto o hardware ou os suprimentos ou desativar o relatório de ambas as seções deste arquivo por
completo.

A fim de desenvolver os scripts do analisador de log, Molly vai ter que aprender a trabalhar com o
VBScript run-time FileSystemObject. Em particular, ela terá de aprender a usar um número de seus
métodos, incluindo:

◆ O arquivo existe(). Validar se um arquivo de log ou relatório existe antes de tentar


para abri-lo

◆ OpenTextFile (). Trabalhar com o conteúdo do arquivo de log ou relatório

◆ Leia a linha(). Ler uma linha de cada vez a partir do arquivo de log

◆ SkipLines (). Ir linhas de cabeçalho ao ler o arquivo de log

◆ Fechar(). Feche o arquivo de log ou relatório quando feito processá-lo

◆ WriteLine (). Escrever uma linha de saída para o arquivo relatório de síntese

◆ WriteBlankLines (). Escrever linhas em branco e formatar a apresentação de


dados no arquivo de relatório de síntese

Molly também planeja fornecer esses scripts com a capacidade de escrever mensagens sobre a sua operação no

log de eventos do aplicativo Windows. Para executar esta tarefa, ela terá que aprender a trabalhar com o WshShell objeto

de RegistrarEvento () método. A Figura 16.6 mostra um exemplo do relatório de síntese que Molly cria

manualmente cada mês. Como você pode ver, ele consiste em declarações que ela copiados manualmente e

colados de cada um dos quatro arquivos de log e relatório.


376 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

FIGURA 16.6 Uma amostra de um relatório de síntese consolidada

Ao automatizar a criação deste relatório usando VBScript, Molly vai eliminar uma tarefa diária que ela
vem realizando. Além disso, ela vai eliminar os erros ocasionais que são por vezes feitas ao criar
manualmente o relatório, tais como dados colando duas vezes ou não em todos.

Programando a execução dos scripts Analyzer


O serviço Agendador de Tarefas do Windows será usado para configurar a execução da programação do
primeiro arquivo analisador de log, o que irá, em seguida, executar e invocar o segundo analisador quando é
feito. Pela execução único script de threading desta forma, Molly garante que cada script será capaz de
acessar o arquivo de relatório de síntese que está a ser gerado, sem ter que se preocupar se um outro
analisador de log é
PROJETO ESTUDO DE CASO: REGISTROS ANÁLISE DE APLICAÇÃO Capítulo 16 377

atualmente acessando. O primeiro analisador de log irá criar um novo relatório de síntese eo resto dos

analisadores irá acrescentar os dados a ele quando eles executam. Além dos analisadores de log, Molly vai

criar um VBScript que é executado uma vez por mês, sob o controle do serviço Agendador de tarefas, a fim de

limpar o log de idade, relatório e arquivos de resumo. Desde o cronograma desses scripts é uma tarefa única

que precisa ser realizada apenas em um servidor, Molly vai configurar manualmente a sua execução

programada usando o Assistente de tarefas agendadas Windows 2000.

Criando um relatório e Log Archive


Cerca de dois anos atrás, Ferramentas Intuit mecânicos passou por uma auditoria completa de toda a sua
fabricação e processos relacionados. Um dos resultados desta auditoria foi uma sugestão de que um
mínimo de valor de ordem relatórios / inventário de um mês e arquivos de log ser mantidos na mão (para
complementar o backup noturno e arquivamento de arquivos de dados no Windows 2000 Server). Desde
aquela época, Molly foi instruído a fazer logon no Windows 2000 Server no primeiro dia útil de cada mês e
para excluir todos, mas o relatório do mês anterior e arquivos de log. Para automatizar a execução desta
tarefa, Molly vai ter que trabalhar com o VBScript run-time FileSystemObject. Em particular, ela terá que
aprender como usar um número de seus métodos, incluindo:

◆ O arquivo existe(). Validar se um arquivo de log ou relatório existe antes de tentar


para abri-lo

◆ MoveFile (). Mover um ou mais arquivos para uma pasta de arquivo para um mini-

retenção mãe de um mês

◆ DeleteFile (). Excluir um ou mais arquivos armazenados no arquivo depois


o período de retenção de um mês se passou

Molly também planeja fornecer este script com a capacidade de escrever mensagens sobre a sua operação no
log de eventos do aplicativo Windows. Para executar esta tarefa, ela terá de usar o WshShell objeto de RegistrarEvento
() método.

resumo
Neste capítulo, você foi apresentado a Molly Masterson e o desafio apresentado a ela para agilizar o
processo de relatórios para a aplicação ordem / inventário em Ferramentas Intuit mecânicos. Na
preparação para enfrentar essa tarefa, Molly tem
378 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

decidiu que VBScript eo WSH irá fornecê-la com as melhores ferramentas para desenvolver-se rapidamente
uma nova geração resumo do relatório e processo de gestão de arquivos.
Capítulo 17
Usando Arquivos de
configuração para controlar
a execução de script
Eu n Neste capítulo, você vai observar como Molly aprende como usar arquivos INI (pronuncia-se “olho 'n olho”)
e determina quais informações ela vai acrescentar ao seu arquivo INI. Você também vai aprender como trabalhar
com métodos pertencente ao VBScript run-time

FileSystemObject a fim de desenvolver um procedimento que pode processar o conteúdo de um arquivo INI.

Isto incluirá a abertura do arquivo INI, localizar a seção apropriada, lendo as suas configurações e, em
seguida, fechar o arquivo INI.

Criando um arquivo de configuração para controlar execução


de scripts
Um dos objetivos do projeto de Molly para o desenvolvimento do relatório e log scripts do
analisador é a exteriorizar como grande parte da configuração dos scripts quanto possível.
Molly trabalha com um número de aplicativos que usam arquivos INI para armazenar as
configurações e preferências do usuário. De vez em quando, ela tem de editar esses arquivos,
normalmente, seguindo as instruções fornecidas por um desenvolvedor de aplicativos ou como
parte de um esforço para tentar e depurar um problema com um aplicativo ou dispositivo de
hardware. Para a maior parte, ela nunca prestou muita atenção a esses arquivos. No entanto,
ao decidir a melhor forma de projetar seus VBScripts, ela decidiu que ela gostaria de externar
suas definições de configuração da mesma forma que ela tem visto outras aplicações usá-los.
Para este fim,

Antes de ficar muito profundamente no processo de desenvolvimento de roteiro, Molly decidiu passar um pouco de

tempo na aprendizagem Internet mais sobre arquivos INI e sua estrutura. arquivos INI ou de inicialização são simples

arquivos de texto ASCII com uma extensão de arquivo. Eles têm sido usados ​há anos para armazenar as

configurações de sistemas operacionais Windows e suas aplicações de hardware e software.

arquivos INI fornecem a capacidade de modificar o comportamento de um aplicativo, utilitário ou script sem
modificar seu código. arquivos INI torná-lo mais fácil de manter estes tipos de recursos e evitar a
possibilidade de introduzir um erro ao modificar as definições de configuração codificados. Além disso,
arquivos INI fornecer inexperiente
Usando arquivos de configuração para controlar SCRIPT Capítulo 17 381

programadores, preocupado com acidentalmente corromper o registro, com um lugar alternativo para armazenar as

configurações do aplicativo.

arquivos INI têm algumas desvantagens. Ao contrário de registro do Windows, que continua a ser um completo
mistério para muitas pessoas, arquivos INI são fáceis de se deparar e excluir. arquivos INI são armazenadas
no disco rígido do computador, o que significa que o disco I / O deve ocorrer quando processá-los,
naturalmente abrandar as aplicações ou scripts que devem acessá-los.

Como os arquivos INI são usados


arquivos INI são usados ​para armazenar as configurações de personalização e preferências. Porque eles são arquivos

de texto ASCII apenas simples, arquivos INI pode ser criado e modificado por qualquer editor de texto. Desde o

lançamento do Windows 95, a Microsoft incentivou fortemente os desenvolvedores de aplicativos e hardware para

começar a armazenar todas as configurações no registro. A maioria dos desenvolvedores de aplicativos ter ido nessa

direção. No entanto, se você fizer uma pesquisa on * ini em um computador com Windows 2000 ou Windows XP, por

exemplo, você ainda vai encontrar dezenas, se não centenas, de arquivos INI em uso. Apesar impulso contínuo da

Microsoft para obter aplicações e hardware para mover todas as configurações no registro do Windows, você vai

encontrar muitos que ainda usam arquivos INI. Isto é especialmente verdadeiro para hardware e software mais antigo.

Para acomodar esses programas e dispositivos mais antigos, Microsoft deixou muitos de seus antigos arquivos INI no

lugar. Desta forma, os aplicativos mais antigos que foram escritas antes dos dias de registro do Windows ainda têm um

lugar para armazenar e recuperar configurações do aplicativo. Você vai encontrar muitos dos arquivos INI no diretório do

sistema do Windows. Você também vai encontrá-los espalhados em pastas todo o seu disco rígido.

sistemas operacionais da Microsoft também fazer uso de arquivos INI. Por exemplo, o Windows 2000 e armazenar

informações de inicialização XP em um arquivo chamado boot.ini. Este arquivo INI é referenciado cada vez que o

computador é iniciado e é usado para apresentar uma lista de opções de inicialização.

Microsoft também usa arquivos INI para armazenar definições de configuração para muitos de seus
utilitários e aplicativos. Por exemplo, se você jogar Solitaire, você verá que as definições de configuração
para a aplicação são mantidas em um arquivo chamado Win.ini. Para demonstrar esse ponto, você pode
abrir Win.ini e olhar para as definições para a aplicação Solitaire. Fechar Win.ini, abra o aplicativo
Solitaire, e fazer uma configuração change.When você reabrir o arquivo Win.ini e examinar as
configurações nas seções [Solitaire], você vai ver que eles mudaram.
382 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

NOTA

Você também pode usar aplicativos como o Microsoft Word para modificar arquivos INI. No entanto, as aplicações de processamento

de texto como o Microsoft Word incorporar um monte de personagens escondidos dentro de arquivos, o que irá causar estragos em

arquivos INI. Se você usar um aplicativo como o Microsoft Word para modificar os arquivos INI, ter certeza que você salvá-los como

arquivos de texto simples.

INI Estrutura do Arquivo


Um arquivo INI é um arquivo que pode ser lido ou gravados por qualquer programa, utilidade, ou script. arquivos INI têm

uma estrutura muito específica e geralmente são processados ​em uma ordem de cima para baixo. arquivos INI são

constituídos por um ou mais Seções. nomes de seção são colocados dentro de um par de colchetes. Seções podem ser

colocados em qualquer ordem dentro de um arquivo INI.

Seções contêm zero ou mais key = value pares, que também podem ser colocados em qualquer ordem dentro de uma

secção. Se um par de chaves = valor é especificado mais de uma vez dentro de uma seção, a última instância

normalmente substitui as instâncias anteriores. arquivos INI também podem conter comentários. Os comentários são

rotulados com o ponto e vírgula; caractere (). Você também pode adicionar linhas em branco para um arquivo INI para

melhorar a sua apresentação. No entanto, os espaços em branco não têm nenhum propósito real e são ignorados quando

o arquivo INI é processado.

As declarações a seguir demonstram o formato ea estrutura de um pequeno arquivo INI.

; Amostra de arquivo INI

[Seção1] Key1 =

valor1 Key2 =

valor2

Como você pode ver, este exemplo de arquivo INI começa com um comentário. Ele tem uma única seção chamada

[Seção 1]. Dois = pares de valores-chave são armazenadas dentro da seção. seções adicionais podem ser adicionados

conforme necessário. Normalmente, um arquivo INI é nomeado após o executável do aplicativo para o qual foi

armazenado configurações. Por exemplo, o arquivo INI de um aplicativo chamado WordDoc.exe provavelmente seria

WordDoc.ini.
Usando arquivos de configuração para controlar SCRIPT Capítulo 17 383

GORJETA

Considere nomear seus arquivos INI após seus nomes de arquivo VBScript. Isto irá torná-los mais fáceis de identificar
e gerenciar. Se você criar um aplicativo VBScript, que consiste de uma série de scripts separados, os quais
compartilham o mesmo arquivo INI, você pode querer nomear um arquivo INI após o VBScript principal ou primeiro
que acessa-lo. A coisa mais importante é ser consistente e previsível em seu esquema de nomeação.

É típico de um aplicativo para ter um arquivo INI, embora uma aplicação certamente pode ter mais de um. Às
vezes, uma coleção de aplicativos relacionados podem compartilhar o mesmo INI file.When este for o caso,
cada aplicativo normalmente tem sua própria seção dentro do arquivo INI. Quando o processamento do arquivo
INI, procurar estas aplicações para a sua secção específica e analisar através de seus pares chave = valor, a
fim de extrair as definições de configuração que necessitam.

Criando o relatório e Log Analyzer INI Arquivo

Como o primeiro passo na criação de um arquivo INI para o relatório e log scripts do analisador, Molly utilizado a

aplicação Windows Notepad para criar um arquivo em branco chamado RptLog.ini. Ela então acrescentou um

comentário e uma seção de título para cada script que vai usar o arquivo INI, como demonstrado abaixo.

; Relatório e Arquivo Log Analyzer INI

[ErrorRpt]

[Vendas diárias]

[] DailyReturns

[Produção diária]

Em seguida, ela começou a trabalhar em seção Relatório de Erros. Molly determinou que ela queria
exteriorizar as seguintes configurações:
384 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

◆ SourDir. O caminho eo nome do arquivo do relatório Error.log

◆ Informar sobre. O nível mínimo de mensagens de erro para informar sobre

◆ EventLog. Um valor booleano que indica se ou não o script deve


escrever mensagens no log de eventos do aplicativo do Windows local

◆ Destfile. O caminho eo nome do arquivo do relatório de síntese

◆ Depurar. Um valor booleano que indica se ou não o script deve dis-


jogar resultados intermediários na forma de caixas de diálogo pop-up quando o processamento

Para começar, Molly modifica o [ ErrorRpt] secção, como mostrado abaixo.

[ErrorRpt]

SourDir = d: \ Order_Inventory \ Logs \ Error.log ReportOn = 3

EventLog = True

Destfile = d: \ Order_Inventory \ Logs \ Summary.txt Debug = False

Quando o VBScript que processa o script analisador de log de erro diário é executado, ele irá procurar o arquivo de

relatório em d: \ Order_Inventory \ Logs \ Error.log. Ele só irá informar sobre os erros que foram atribuídos a gravidade

dos 3 ou superior. O script irá escrever mensagens para o log de eventos do aplicativo Windows quando ele é

executado. Ele vai escrever sua saída para d: \ ApplicationName \ Summary.txt. Finalmente, ele não irá exibir todas as

informações de depuração. Em seguida, ela modifica o [ Vendas diárias] secção, como mostrado abaixo.

[Vendas diárias]

SourDir = d: \ Order_Inventory \ Logs \ DailySales.txt ReportOn =

SummaryOnly EventLog = True

Destfile = d: \ Order_Inventory \ Logs \ Summary.txt Debug = False

A única diferença nas configurações para este script é a modificação do SourDir chave eo Informar sobre chave,
que tem sido atribuído um valor de SummaryOnly. Este valor será usado para limitar os dados coletados pelo
script analisador de log Relatório de vendas diárias para apenas as informações de resumo na parte
inferior do relatório.
Usando arquivos de configuração para controlar SCRIPT Capítulo 17 385

NOTA

Cada um dos scripts de analisador de relatórios e log será projetado para utilizar as definições de configuração padrão no
caso em que o arquivo INI é excluído ou que as configurações são omitidos do arquivo INI. Por exemplo, se o Informar
sobre chave foi removido a partir do [ Vendas diárias]
seção, em seguida, o VBScript faria por processo padrão o arquivo inteiro.

Molly então modifica o [ Produção diária] seção.

[] DailyReturns

SourDir = d: \ Order_Inventory \ Logs \ DailyReturns.txt ReportOn =

SummaryOnly Eventlog = True

Destfile = d: \ Order_Inventory \ Logs \ Summary.txt Debug = False

Como você pode ver, a única diferença entre esta secção e o [ Vendas diárias]
seção é o valor atribuído ao SourDir chave. Então Molly modifica o [ DailyReturns] secção,

como mostrado abaixo.

[Produção diária]

SourDir = d: \ Order_Inventory \ Logs \ DailyProduction.txt Eventlog = True

ReportOn = HardAndSupl

Destfile = d: \ Order_Inventory \ Logs \ Summary.txt Debug = False

Mais uma vez, a única diferença entre esta e as seções anteriores são a SourcDir chave eo Informar

sobre chave, que é definido para HardAndSupl ( instruindo o script para informar sobre hardware do

relatório e fontes de informação). Quando totalmente montado, o arquivo INI acabado parece com o

mostrado abaixo.

; Relatório ini resumo

[ErrorRpt]

SourDir = d: \ Order_Inventory \ Logs \ Error.log ReportOn = 3

EventLog = True
386 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

Destfile = d: \ Order_Inventory \ SummaryRpts \ Debug =

False

[Vendas diárias]

SourDir = d: \ Order_Inventory \ Logs \ DailySales.txt ReportOn =

SummaryOnly EventLog = True

Destfile = d: \ Order_Inventory \ SummaryRpts \ Debug =

False

[] DailyReturns

SourDir = d: \ Order_Inventory \ Logs \ DailyReturns.txt ReportOn =

SummaryOnly EventLog = True

Destfile = d: \ Order_Inventory \ SummaryRpts \ Debug =

False

[Produção diária]

SourDir = d: \ Order_Inventory \ Logs \ DailyProduction.txt EventLog = True

ReportOn = HardAndSupl

Destfile = d: \ Order_Inventory \ SummaryRpts \ Debug =

False

Criação de um procedimento INI processamento de


arquivos
Agora que Molly tem projetado o arquivo RptLog.ini, ela coloca uma cópia do mesmo em d: \ VBScript \
Analisadores no Windows 2000 Server onde o sistema de pedidos / inventário reside. Ela começa a trabalhar
no desenvolvimento de um procedimento que pode ser usado para processar o arquivo INI. Mais tarde,
quando ela começa a trabalhar em cada um o relatório e log scripts do analisador, ela vai incorporar esse
procedimento para esses scripts. Para acessar e processar o arquivo INI, ela terá que aprender a trabalhar
com o seguinte FileSystemObject métodos:

◆ O arquivo existe()

◆ OpenTextFile ()
Usando arquivos de configuração para controlar SCRIPT Capítulo 17 387

◆ Leia a linha()
◆ Fechar()

O primeiro passo na utilização de métodos que pertencem à FileSystemObject é a criação de uma


instância dele dentro do seu VBScript. Isso é feito usando o WScript
objeto de CreateObject () método e por referência a ele como Scripting. FileSystemObject, como
demonstrado abaixo:

Definir FsoObject = WScript.CreateObject ( “Scripting.FileSystemObject”)

Uma vez instanciado como mostrado acima, você pode fazer referência a FileSystemObject
dentro de seus scripts como FsoObject.

NOTA

Se seus VBScripts será executado em um computador que usa o Windows NT, 2000 ou sistema operacional XP junto com o
sistema de arquivos NTFS, então você deve tomar medidas para se certificar de que você tem o conjunto apropriado de
permissões de segurança necessárias para executar as tarefas para que seus VBScripts são escritos.

Verificar se o arquivo INI existe


O primeiro passo que você deve sempre tomar quando se preparando para processar um arquivo é para
verificar se o arquivo existe antes de tentar abri-lo. Isto permite-lhe evitar um erro se ele não existe ou para
criar um novo arquivo se apropriado para a tarefa em mãos. Para determinar se um arquivo existe ou não, use
o FileSystemObject objeto de
O arquivo existe() método. Este método tem a seguinte sintaxe.

ObjectReference. O arquivo existe( Nome do arquivo)

ObjectReference é o nome atribuído à instância do FileSystemObject definido dentro do script, e Nome


do arquivo é o nome eo caminho do arquivo cuja existência deve ser verificada. o O arquivo
existe() método retorna um valor de
Verdade se o arquivo existe e um valor de Falso se ele não existe.
388 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

NOTA

arquivos INI pode ser acidentalmente apagado ou renomeado para uma variedade de razões. Uma maneira de lidar com
esta situação possível é trabalhar com o administrador do sistema para apertar as permissões de segurança do Windows
para impedir que usuários não administradores de ser capaz de acessar o conteúdo da pasta onde os scripts e arquivos INI
residem. Outra maneira de lidar com este tipo de situação é codificar um conjunto de definições de configuração padrão
sempre que possível. Desta forma, o script ainda pode continuar a executar e possivelmente fazer uma mensagem de
evento de notificação de erro no log de eventos do Windows para informá-lo da situação.

As seguintes declarações do VBScript demonstrar como usar o O arquivo existe()


método para determinar onde um arquivo chamado sample.ini reside nas mesmas pastas como o VBScript.

Se (FsoObject.FileExists ( “sample.ini“)) Then

MsgBox “sample.ini já existe.” Else

MsgBox “não sample.ini não existe.” End If

NOTA

Se o arquivo cuja existência deve ser verificada não reside na mesma pasta como o VBScript, você deve
especificar o caminho completo eo nome do arquivo.

Abrindo o arquivo INI


Depois de ter verificado que o arquivo INI que armazena as definições de configuração do VBScript existe,
você pode abri-lo. Para abrir um arquivo, use o FileSystemObject
objeto de OpenTextFile () método. Este método abre o arquivo especificado e retorna um objeto
TextStream que pode ser usado para processar o conteúdo do arquivo. O objeto TextStream
representa um arquivo como um fluxo contínuo de data.The OpenTextFile () método tem a seguinte
sintaxe.

ObjectReference. OpenTextFile ( FileName, [OpenMode, [Criar, [formatType]]])


Usando arquivos de configuração para controlar SCRIPT Capítulo 17 389

ObjectReference é o nome atribuído à instância do FileSystemObject definido dentro do script, e Nome


do arquivo é o nome eo caminho do arquivo a ser aberto. OpenMode é um parâmetro opcional que
especifica o modo no qual o ficheiro deve ser aberto e é especificado usando um dos valores
numéricos apresentados no Quadro 17.1.

Tabela 17.1 OpenTextFile () Constantes Constante

Descrição Valor

Para ler Abre ou cria um arquivo de modo que possa ser lido 1

Para escrever Abre um novo arquivo e escreve a ele 2

ForAppending Abre um arquivo existente e acrescenta ao final do mesmo 8

Crio é um parâmetro booleano opcional. Quando ajustado para Verdade, ele especifica que se o arquivo

especificado não existir, ele deve ser criado. Quando ajustado para Falso, um novo arquivo não é criado se o
arquivo especificado não existe. O padrão é Falso. formatType é um parâmetro opcional que especifica o formato
do arquivo quando um novo arquivo é criado. As opções disponíveis para este parâmetro são listadas na
Tabela 17.2.

Tabela 17.2 OpenTextFile () Formato de arquivo Tipo Opções Valor

Descrição

TristateTrue Abre o arquivo como Unicode

TristateFalse Abre o arquivo como ASCII

TristateUseDefault Abre o arquivo usando o tipo de arquivo padrão do sistema operacional

NOTA

Seja especialmente cuidadoso ao especificar se deseja ler, escrever, ou anexar um arquivo. Se você abrir um arquivo em Para
escrever Modo e o arquivo já existe, seu conteúdo é reinicializado, o que resulta em uma perda de todos os dados
existentes.
390 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

O exemplo a seguir demonstra como abrir um arquivo, a fim de escrever para ele. Neste exemplo, o
arquivo é criado se ele não existe, especificando Para escrever como seu OpenMode configuração. No
entanto, se o arquivo já existe, é em vez aberto usando o ForAppending modo.

Dim FsoObject, strSourceFile, OpenFile Const

cForReading = 1 Const cForWriting = 2 Const

cForAppending = 8

Definir FsoObject = WScript.CreateObject ( “Scripting.FileSystemObject”) strSourceFile = “D: \

LogFiles \ DailyRpt.log”

If (FsoObject.FileExists (strSourceFile)) então

Definir OpenFile = FsoObject.OpenTextFile (strSourceFile, cForAppending) Else

Definir OpenFile = FsoObject.OpenTextFile (strSourceFile, cForWriting, “True”) End If

NOTA

Não é possível realizar diferentes tipos de operações em um arquivo aberto ao mesmo tempo. Em outras palavras,
se você abrir um arquivo usando o Para ler modo, você não pode mudar para Para escrever ou ForAppending modos
sem primeiro fechar e, em seguida, reabrir o arquivo novamente.

Lendo o arquivo INI


Uma vez que você sabe como abrir um arquivo e defina o modo apropriado, você está pronto para ler, escrever, ou

anexar o arquivo. Várias etapas devem ser tomadas ao ler um arquivo, conforme descrito abaixo.

◆ Determinar se o arquivo contém quaisquer dados

◆ Leia o arquivo

◆ Feche o arquivo quando feito

Cada uma destas tarefas serão examinados nas seções que se seguem.
Usando arquivos de configuração para controlar SCRIPT Capítulo 17 391

Determinar se um arquivo contém quaisquer dados


A primeira coisa a fazer ao abrir um arquivo é determinar se é ou não contém quaisquer dados. Caso contrário,

não há nenhum ponto em abri-lo e tentar ler a partir dele. Isso pode ser feito usando o AtEndOfStream propriedade,

que irá retornar um valor booleano de Verdade se o arquivo contém dados e Falso se isso não acontecer. Você

também pode continuar a verificar o valor do AtEndOfStream propriedade pouco antes de realizar qualquer

operação de leitura para se certificar de que você não tenha atingido o fim do arquivo. Por exemplo, as

seguintes declarações do VBScript demonstrar como determinar se um arquivo existe e se é ou não contém

quaisquer dados. Se o arquivo for encontrado para conter dados, em seguida, um loop é configurado para

processar o arquivo, terminando quando o valor de AtEndOfStream torna-se igual a Verdade.

Dim FsoObject, strSourceFile, OpenFile

Const cForReading = 1 const

cForWriting = 2 const

cForAppending = 8

Definir FsoObject = WScript.CreateObject ( “Scripting.FileSystemObject”)

strSourceFile = “d: \ VBScripts \ Analisadores \ RptLog.ini”

If (FsoObject.FileExists (strSourceFile)) então

Definir OpenFile = FsoObject.OpenTextFile (strSourceFile, cForReading)

Fazer enquanto Falso = OpenFile.AtEndOfStream

............... ..

laço Else

MsgBox strSourceFile & “não existe.” End If

Como você pode ver, três constantes foram definidos no início do exemplo, a fim de torná-lo mais fácil de
read.These três constantes representam as diferentes maneiras que um arquivo podem ser processados ​pelo
VBScript. Em seguida uma instância da FileSystemObject é instanciado eo local do arquivo INI a ser processado é
especificado. Em seguida, um E se
declaração é executado, a fim de determinar se é ou não o arquivo INI contém quaisquer dados. Se isso
acontecer, então o arquivo é aberto para leitura e um Fazer ... Até laço é executado que, então, conter outras
declarações necessárias para processar o arquivo INI. O loop irá iterar até o final do arquivo é alcançado.
392 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

Lendo o arquivo INI Entire


Uma maneira de processar o conteúdo de um arquivo requer que você use o FileSystemObject objeto de Leia a
linha() método. Este método retorna uma cadeia que representa toda uma linha de saída em um arquivo. A

sintaxe do Leia a linha() método é mostrado abaixo.

ObjectReference. Leia a linha()

ObjectReference é o nome atribuído à instância do FileSystemObject definido dentro do script.

Ao modificar o exemplo anterior, conforme mostrado abaixo, você pode desenvolver um procedimento para

processar todo o conteúdo do RptLog.ini que foi desenvolvido anteriormente por Molly.

Dim FsoObject, strSourceFile, OpenFile

Const cForReading = 1 const

cForWriting = 2 const

cForAppending = 8

Definir FsoObject = WScript.CreateObject ( “Scripting.FileSystemObject”)

strSourceFile = “d: \ VBScripts \ Analisadores \ RptLog.ini”

If (FsoObject.FileExists (strSourceFile)) então

Definir OpenFile = FsoObject.OpenTextFile (strSourceFile, cForReading) fazer enquanto Falso =

OpenFile.AtEndOfStream

WScript.Echo (OpenFile.ReadLine ()) loop

OpenFile.Close Else

MsgBox strSourceFile & “não existe.” End If

O exemplo anterior garante que o ficheiro INI existe e que tem dados na mesma, antes de começar a ler
o seu conteúdo de uma linha de cada vez. O arquivo INI é lido desde o início até o final do arquivo
usando o FileSystemObject objeto de Leia a linha()
método. Ele termina, executando o FileSystemObject objeto de Fechar() método. Esse método fecha um
arquivo TextStream aberto e tem a seguinte sintaxe:
Usando arquivos de configuração para controlar SCRIPT Capítulo 17 393

ObjectReference. Perto( )

ObjectReference é o nome atribuído à instância do FileSystemObject definido dentro do script

NOTA

Sempre use o FileSystemObject objeto de Fechar() método antes de permitir que seus VBScripts para terminar sua
execução. Caso contrário, você corre o risco de causar um erro na próxima vez que você tenta processar o arquivo. A
razão é que fabricante de fim-de-arquivo do arquivo não pode ser criada.

Se você fosse para salvar as declarações do VBScript anteriores como um script e executá-los contra o arquivo

RptLog.ini de Molly, você veria os resultados mostrados na Figura 17.1.

FIGURA 17.1 Processamento de todo o conteúdo de um arquivo INI

A leitura de um trecho de um arquivo INI


Em muitos casos, pode ser apropriado para ler e processar todo o conteúdo de um arquivo INI de uma só vez.
Por exemplo, quando mais de um roteiro compartilha o mesmo INI
394 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

arquivo, como é o caso no projeto de Molly, você precisa encontrar uma maneira de processar seletivamente uma única

seção do arquivo INI de cada vez. As seguintes declarações do VBScript demonstram uma maneira de alcançar este

objetivo.

Dim FsoObject, strSourceFile, OpenFile, strInputLine, intCounter

Const cForReading = 1 const

cForWriting = 2 const

cForAppending = 8

Definir FsoObject = WScript.CreateObject ( “Scripting.FileSystemObject”)

strSourceFile = “d: \ VBScripts \ Analisadores \ RptLog.ini”

If (FsoObject.FileExists (strSourceFile)) então

Definir OpenFile = FsoObject.OpenTextFile (strSourceFile, cForReading)

Do Until Mid (strInputLine, 1, 15) = “[DailyReturns]”

strInputLine = OpenFile.ReadLine loop

Do Until OpenFile.AtEndOfStream = “True”

strInputLine = OpenFile.ReadLine Se idade (strInputLine,

1, 1) = “[” Então

Sair não

End If

WScript.Echo strInputLine loop

OpenFile.Close

Outro

MsgBox strSourceFile & “não existe.” End If

UMA Fazer ... Até loop é configurado para iniciar o processamento inicial do arquivo INI. No caso deste
exemplo, a Fazer ... Até laço é executado até que encontre o [ DailyReturns]
cabeçalho de secção. Isso é feito usando o VBScript MID () função, passando-os parâmetros de 1 e 15,
que representam a partida e terminando posição de carácter
Usando arquivos de configuração para controlar SCRIPT Capítulo 17 395

dos suportes de abertura e fechamento no [ DailyReturns] seção header.When localizado, o Fazer ... Até circuito
pára a execução e uma segunda Fazer ... Até ciclo começa a ser executado. Este ciclo executa e processa
os pares chave = valor armazenado no
[] DailyReturns seção usando o Leia a linha() método. Este laço é executado até que a próxima secção de

cabeçalho é encontrado (por exemplo, olhando para o [personagem como o primeiro carácter de cada linha
que segue) ou o fim do ficheiro for atingido (por exemplo, quando o valor de AtEndOfStream é igual a "Verdade").

NOTA

o Mediana () função é usada para recuperar ou analisar um número especificado de caracteres a partir de um script. Sua

sintaxe é mostrada abaixo.

mid ( corda, StartPosition [, Comprimento])

Corda representa a string a partir do qual os personagens são para ser analisado. Posição inicial especifica a
posição do carácter na cadeia onde a operação de análise deve começar, e comprimento é um parâmetro
opcional que especifica o número de caracteres a ser retornado. Se o comprimento parâmetro for omitido,
então todos os caracteres da posição do início até o final da cadeia são devolvidos.

Se você fosse para salvar as declarações do VBScript anteriores como um script e executá-lo contra o arquivo RptLog.ini

de Molly, você veria os resultados mostrados na Figura 17.2.

FIGURA 17,2 Limitar o processamento de um arquivo INI para uma única seção
396 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

Usando o exemplo anterior como um modelo, você pode desenvolver um procedimento que você pode
incorporar no relatório e log scripts do analisador, a fim de capacitá-los a recuperar suas definições de
configuração do arquivo INI de Molly.

resumo
Neste capítulo, você aprendeu a usar arquivos INI como um meio de armazenar definições de configuração
para seus VBScripts. Isto incluiu uma revisão de sua estrutura e design, bem como uma explicação das
etapas envolvidas na validação sua existência, abrindo e lendo uma ou todas as secções que compõem
arquivos INI, e como fechá-los quando terminar. Usando as técnicas apresentadas neste capítulo, você
será capaz de incorporar o processamento de arquivos INI dentro de seus VBScripts e desenvolver o
relatório e log scripts do analisador necessários no próximo capítulo.
Capítulo 18
Desenvolver Script
Analisadores do registro
Eu n Neste capítulo, você vai aprender a escrever uma coleção de relatório e log scripts do analisador, cada um
dos quais é projetado para processar um arquivo formatado exclusivamente. Ao fazer isso, você vai continuar a
expandir a sua compreensão das técnicas envolvidas em arquivos de leitura e processamento. Além disso, você vai
aprender as técnicas básicas envolvidas na criação de arquivos de saída e relatórios. Este capítulo também irá
apresentá-lo a uma série de funções e métodos do VBScript.

Relatório da leitura e arquivos de log


No capítulo anterior, você aprendeu a aplicar uma série de métodos que pertence ao FileSystemObject a fim
de ler o conteúdo do relatório e arquivos de log. Neste capítulo, você vai continuar a expandir o seu
conhecimento de técnicas de script O arquivo I / como você aprender a desenvolver o relatório deste
projecto e log scripts do analisador. Você também vai aprender como usar o SkipLine () método. Este método
permite que você pule linhas, como cabeçalhos, em arquivos de entrada e desenvolver técnicas mais
simplificadas para o processamento de arquivos de entrada. A sintaxe do SkipLine () método é mostrado
abaixo.

ObjectReference.SkipLine ()

ObjectReference é a variável que representa a instância do arquivo que está sendo processado.

NOTA

SkipLine () não permitirá que você para atravessar para trás através de um arquivo e só é aplicável quando o
arquivo de entrada é aberto para leitura.

o SkipLine O método não aceita nenhum argumento e está limitada a pular uma única linha de cada vez. No entanto,

por envolvê-lo dentro de um laço, é possível executar o método repetidamente para saltar como muitas linhas,

conforme necessário, tal como demonstrado abaixo.

Definir FsoObject = CreateObject ( “Scripting.FileSystemObject”)


DESENVOLVIMENTO ANALISADORES SCRIPT LOG Capítulo 18 399

Definir SampleRpt = FsoObject.OpenTextFile ( “d: \ VBScripts \ Demonstração \ SampleRpt.txt”, 1) Para i = 1 a 3

SampleRpt.SkipLine () Próximo

Neste exemplo, um arquivo chamado SampleRpt.txt é aberta e as três primeiras linhas são ignoradas. Como
resultado, a próxima operação executada no arquivo ocorreria na quarta linha do arquivo.

Gravando em Arquivos
A fim de completar o desenvolvimento do relatório e log scripts do analisador você precisa saber como
escrever saída de texto para arquivos, a fim de gerar o relatório de síntese. Para executar esta tarefa,
você terá que aprender a trabalhar com o FileSystemObject objeto de WriteLine () método, que tem a
seguinte sintaxe:

ObjectReference. WriteLine ([ TextMsg])

ObjectReference é a variável que representa o exemplo do FileSystemObject. TextMsg é um parâmetro


opcional que representa uma cadeia de texto a ser escrito como a próxima linha no arquivo.

NOTA

WriteLine () anexa automaticamente um caractere de nova linha ao final de cada sequência de texto que grava em um arquivo. Outra

maneira de gravar dados de texto para um arquivo é com o Escrever()

método, que escreve uma cadeia de texto a um arquivo sem acrescentar um caractere de nova linha, permitindo-lhe criar uma

única linha de texto em um arquivo utilizando várias operações de gravação.

O exemplo a seguir demonstra como usar o WriteLine () método para anexar uma cadeia de texto para o final
de um arquivo de relatório.

Definir FsoObject = CreateObject ( “Scripting.FileSystemObject”) Set SampleRpt = FsoObject.OpenTextFile ( “d: \

VBScript \ s \ demo \ SampleRpt.txt”, 8) SampleRpt.WriteLine ( “--- Relatório Resumo da conta ---” )

SampleRpt.Close ()
400 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

Se você chamar o WriteLine () método sem fornecer uma cadeia de texto, ele vai escrever uma linha em
branco. Você vai precisar adicionar linhas em branco, a fim de melhorar a apresentação da saída de texto no
relatório de síntese. No entanto, o modo preferido para escrever linhas em branco é usando o WriteBlankLines () método,
que tem a seguinte sintaxe.

ObjectReference. WriteBlankLines ( NoOfLines)

ObjectReference é a variável que representa o exemplo do FileSystemObject. NoOfLines representa

o número de linhas em branco a ser escrito. O exemplo a seguir demonstra como usar o WriteBlankLines
()
Método para acrescentar duas linhas em branco ao final de um arquivo de relatório.

Definir FsoObject = CreateObject ( “Scripting.FileSystemObject”) Set SampleRpt = FsoObject.OpenTextFile ( “d: \

VBScript \ s \ demo \ SampleRpt.txt”, 8) SampleRpt.WriteLine ( “--- Relatório Resumo da conta ---”

SampleRpt.WriteBlankLines) (2) () SampleRpt.Close

Criando o erro Log Analyzer


O primeiro relatório e log roteiro analisador que Molly vai enfrentar é o ErrorAnalyzer.vbs, que será
responsável pela execução das seguintes tarefas:

◆ Ajustar o ajuste defaults caso a RptLog.ini configuração roteiro


arquivo está ausente certos pares chave = valor ou foi removida do servidor Windows
2000

◆ Leitura e processamento do arquivo INI

◆ Criando um novo relatório de síntese

◆ Gravação de uma mensagem no log de eventos do aplicativo Windows

◆ Lendo e analisar o arquivo de log Error.log olhando para o nível 3 ou superior


mensagens de eventos

◆ escrevendo o erros: seção dos ErrorAnalyzer.vbs arquivo de relatório resumo precisará ler

o arquivo RptLog.ini, que irá residir no D: \ VBScripts \ Analisadores e processar os principais =

valor par entradas da


[ErrorRpt] secção, como mostrado no exemplo a seguir.
DESENVOLVIMENTO ANALISADORES SCRIPT LOG Capítulo 18 401

[ErrorRpt]

SourDir = d: \ Order_Inventory \ Logs \ Error.log ReportOn = 3

EventLog = True

Destfile = d: \ Order_Inventory \ SummaryRpts \ Debug =

False

Além disso, ErrorAnalyzer.vbs terá que ler e processar o arquivo Error.log localizado em D: \
Order_Inventory \ Logs no Windows 2000 Server. Uma cópia deste arquivo é mostrado abaixo.

*******************************************************************************

Reportar erro 3/15/03

*******************************************************************************

Encontro TimeCode Descrição

12:15:44 3/15/03 001 Não é possível acessar leitor de cartão em wkstn442 dispositivo

12:26:43 3/15/03 005 senha do aplicativo inválido fornecido por AMAT01

14:00:14 3/15/03 001 Nenhum inventário para a parte # 58694 - incapaz de preencher ordem 39312

15:05:02 3/15/03 005 senha do aplicativo inválido fornecido por MJLF01

16:16:46 3/15/03 003 Impossível imprimir rpt resumo sobre mestre impressor (sem papel)

-------------------------------------------------------------------------------

número total de erros relatados = 5

A seção de inicialização
Do script Inicialização Seção, mostrado na página seguinte, começa por variáveis ​que definem, constantes
e objetos necessários globalmente pelo script. Isto inclui a criação de uma matriz de dimensão única
chamada astrReportArray que será usado para manter linhas selecionadas de texto do error.log arquivo
como ele está sendo lido.
402 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

Três constantes também são definidos para fazer o script mais fácil de ler. Essas constantes são chamados cForReading,
cForWriting, e cForAppending. Cada um representa um tipo diferente de modo de arquivo I / O. o FileSystemObject

Também é instanciado globalmente, uma vez que irá ser utilizado por vários procedimentos dentro do script.
Por último, a variável strSourceFile é atribuído o nome e caminho do arquivo INI do script.

'************************************************* ************************ 'Script Nome: 18.3.vbs script' Autor: Jerry

Ford 'Criado: 03/22/03

'Descrição: Este script recupera as definições de configuração de um arquivo INI,' processa um arquivo de relatório

e cria um arquivo de relatório Resumo. '************************************************* ************************

'Seção de inicialização

Option Explicit

Dim FsoObject, strSourceFile, OpenFile, strInputLine, intCounter Dim strSourDir, strReportOn,

strEventLog, strDestFile, strDebug

ReDim astrReportArray (0)

Const cForReading = 1 const

cForWriting = 2 const

cForAppending = 8

Definir FsoObject = WScript.CreateObject ( “Scripting.FileSystemObject”)

strSourceFile = “d: \ VBScripts \ Analisadores \ RptLog.ini”

A Seção de Processamento Principal


o Seção de Processamento principal, mostrado na página seguinte, faz seis chamadas de procedimento e,
em seguida, executa o WScript objeto de Sair() método. Configuração padrão() chama a sub-rotina que
estabelece definições de configuração padrão para o script. ProcessIniFile () abre a RptLog.ini arquivo,
extrai a chave = valor
DESENVOLVIMENTO ANALISADORES SCRIPT LOG Capítulo 18 403

pares de o [ ErrorRpt] seção, e atribui-los a variáveis ​locais, substituindo quaisquer configurações de


variáveis ​padrão correspondente. RefineOutputFileName () usa o VBScript Encontro() e Substituir() funções
para criar um nome de arquivo com carimbo de data para o relatório de síntese que o script irá criar e
escrever a saída para. Em seguida, um E se declaração está configurado para determinar se ou não o
script deve escrever uma mensagem de evento no log de eventos do aplicativo do Windows, verificando o
valor do strEventLog variável e chamar a WriteToEvenLog () sub-rotina se for o caso. o ProcessReportFile () sub-rotina
é chamada seguinte. Ele lê o arquivo Error.log, analisar as linhas de texto que contenham mensagens de
nível 3 ou superior erro e armazená-los como entradas no astrReportArray. Em seguida, o RecordSummaryData
() sub-rotina é chamada. Ele cria um novo relatório de síntese e escreve o erros: seção, recuperando os

dados do relatório de astrReportArray. finalmente, o WScript objeto de Sair() método é usado para terminar a
execução do script.

'Secção de Processamento Principal

Padrões de configuração()

ProcessIniFile ()

RefineOutputFileName ()

Se strEventLog = “True” Então

WriteToEventLog () End

If

ProcessReportFile ()

RecordSummaryData ()

'Terminar roteiro WScript.Quit execução

()

Os SetUpDefaults () subrotina
o Padrões de configuração() sub-rotina atribui valores padrão para os seguintes cinco variáveis ​globais,
cada um dos quais representa uma configuração padrão para o script.
404 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

◆ strSourDir. Especifica o local do arquivo Error.log.


◆ strReportOn. Especifica o nível mínimo de erros de evento mensagem para
informar sobre.

◆ strEventLog. Especifica se o script deve gravar uma men-


sábio para o log de eventos do aplicativo do Windows.

◆ strDestFile. Especifica a pasta onde o relatório de síntese é ser


salvou.

◆ strDebug. Especifica se o script é executado no modo de depuração.


Quando executado no modo de depuração, caixas de diálogo pop-up exibir valores de variáveis

​intermediárias e identificar quando vários procedimentos de execução, a fim de acompanhar o progresso do

script quando ele executa.

'Secção Procedimento

SetUpDefaults sub ()

strSourDir = “d: \ Order_Inventory \ Logs \ Error.log” strReportOn = 3

strEventLog = “True”

strDestFile = “d: \ Order_Inventory \ SummaryRpts \” strDebug = “false”

End Sub

O ProcessIniFile () subrotina
o ProcessIniFile () sub-rotina, mostrado abaixo, adapta-se a lógica desenvolvida a partir do script de
processamento INI amostra no Capítulo 17, “Utilizando Arquivos de configuração para controlar Script
Execution”. Ele processa os arquivos RptLog.ini e extrai a chave = valor pares localizados no [ ErrorRpt] seção.

Sub ProcessIniFile ()

Dim strKeyName, intGetEqualsPosition

If (FsoObject.FileExists (strSourceFile)) então

Definir OpenFile = FsoObject.OpenTextFile (strSourceFile, cForReading)


DESENVOLVIMENTO ANALISADORES SCRIPT LOG Capítulo 18 405

Do Until Mid (strInputLine, 1, 10) = “[ErrorRpt]”

strInputLine = OpenFile.ReadLine loop

Do Until OpenFile.AtEndOfStream = “True”

strInputLine = OpenFile.ReadLine

Se Mid (strInputLine, 1, 1) = “[” Então

Sair não

End If

Se Len (strInputLine) <> 0 Then

intGetEqualsPosition = Instr (strInputLine, “=”) = strKeyName de idade (strInputLine, 1,

intGetEqualsPosition - 1)

Select Case strKeyName

Caso “SourDir”

strSourDir = idade (strInputLine, intGetEqualsPosition + 1, _

Len (strInputLine)) Caso

“ReportOn”

strReportOn = idade (strInputLine, intGetEqualsPosition + 1, _

Len (strInputLine)) Caso

“EventLog”

strEventLog = idade (strInputLine, intGetEqualsPosition + 1, _

Len (strInputLine)) Caso

“destfile”

strDestFile = idade (strInputLine, intGetEqualsPosition + 1, _

Len (strInputLine)) Caso

“Debug”

strDebug = idade (strInputLine, intGetEqualsPosition + 1, _

Len (strInputLine)) End Select

Fim se

laço

OpenFile.Close ()
406 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

Fim se

Se strDebug = “True” Então

MsgBox “strSourDir =“& strSourDir MsgBox

“strReportOn =“& strReportOn MsgBox “strEventLog =“&

strEventLog MsgBox “strDestFile =“& strDestFile

MsgBox “strDebug =“& strDebug End If

End Sub

Como chave = valor pares são analisados ​para fora, um Selecionar caso declaração está configurado para atribuir

definições de configuração de script para variáveis ​locais, substituindo, assim, quaisquer configurações padrão

correspondente.

No final desta sub-rotina, uma E se declaração está configurado para verificar o valor atribuído ao strDebug
variável, a fim de determinar se o script está sendo executado no modo de depuração. Se for, então o
valor de cada uma dessas variáveis ​é exibida para mostrar o estado das definições de configuração do
script.

O RefineOutputFileName () subrotina
o RefineOutputFileName () sub-rotina, mostrado na próxima página, é responsável por determinar o
nome do arquivo em que o relatório de síntese é para ser salvo. Para facilitar a manutenção de um
arquivo de relatórios resumidos, cada relatório é atribuído um nome de arquivo exclusivo que inclui
um carimbo de data. Esta sub-rotina usa a Encontro() função para recuperar a data atual no formato
de
mm / dd / aaaa. Em seguida, ele usa o Substituir() função para substituir cada instância do caractere de barra

invertida (/) com o traço ( -) personagem.

NOTA

O Windows não permitir que o caractere de barra invertida (/) para ser usado em nomes de arquivos. Portanto, o
traço ( -) caractere é usado como um caractere de substituição para separar o mês, dia e componentes ano da data.
DESENVOLVIMENTO ANALISADORES SCRIPT LOG Capítulo 18 407

Sub RefineOutputFileName ()

DataString Dim

DataString = Replace (Date () “/”, “-”)

strDestFile = strDestFile & DataString & “_SumRpt.txt”

End Sub

O ProcessReportFile () subrotina
o ProcessReportFile () sub-rotina, mostrado abaixo, abre o arquivo Error.log para leitura, estabelece uma Do ...
Loop que localiza a linha que começa com a palavra Encontro, e, em seguida, define-se uma segunda volta para

processar o restante do ficheiro. Durante cada iteração do segundo ciclo, o Instr () função é usado para
determinar a localização do 00 caracteres (cada número de eventos de erro inicia-se com dois zeros) e, em
seguida, usa a Mediana () função para determinar o nível de erro de evento da mensagem de erro. As
mensagens com um maior nível de evento de erro de nível 3 ou são adicionadas a uma matriz dinâmica
chamada astrReportArray.

Se o script está sendo executado no modo de depuração, o MsgBox () função é usada para exibir cada
mensagem de erro que é adicionado à matriz. O segundo Do ... Loop
continua a iteração até que todas as mensagens de erro restantes foram examinados. Finalmente o arquivo
Error.log está fechado.

Sub ProcessReportFile ()

Dim fileref, strRptLine, intGetFirstBlankPosition, outputfile

Dim intArrayCounter, IntErrLevel

intArrayCounter = 0

If (FsoObject.FileExists (strSourDir)) então

Definir fileRef = FsoObject.OpenTextFile (strSourDir, cForReading)

Do Until Mid (strRptLine, 1, 4) = “Data”

strRptLine = FileRef.ReadLine () loop

Do Until FileRef.AtEndOfStream
408 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

FileRef.SkipLine ()

strRptLine = FileRef.ReadLine () Se Esquerda

(strRptLine, 1) = “-” Então

Saia Do

End If

intGetFirstBlankPosition = Instr (strRptLine, “00”) = intErrLevel de idade (strRptLine,

intGetFirstBlankPosition + 3, 1) Se intErrLevel <= 3 Em seguida

ReDim Preservar astrReportArray (intArrayCounter) astrReportArray

(intArrayCounter) = strRptLine End If

Se strDebug = “True” Então

MsgBox "Armazenamento 'e strRptLine &“' na matriz astrReportArray”End If

intArrayCounter = intArrayCounter + 1 Loop FileRef.Close ()

Outro

astrReportArray (intArrayCounter) = “file Error.log não estava disponível.” End If

End Sub

O RecordSummaryData () subrotina
o RecordSummaryData () sub-rotina, mostrado na próxima página, cria um novo arquivo de relatório
de síntese e escreve seu cabeçalho de nível superior, seguido pelo erros: seção usando o WriteLine ()
e WriteBlankLines () funções. UMA
Para cada loop é então configurado que processa as seqüências de texto armazenados no

astrReportArray e escreve-los para o erros: seção do arquivo de relatório de síntese. O arquivo de relatório de

síntese é então fechada. Finalmente, se o script é executado no modo de depuração, o MsgBox () função é
usada para exibir uma mensagem pop-up mostrando que este procedimento foi executado.
DESENVOLVIMENTO ANALISADORES SCRIPT LOG Capítulo 18 409

Sub RecordSummaryData ()

Dim intArrayCounter, outputfile, strMessage

intArrayCounter = 0

Definir outputfile = FsoObject.OpenTextFile (strDestFile, 2, “True”)

Se strDebug = “True” Então

MsgBox “Agora escrevendo para o relatório de síntese” End If

OutPutFile.WriteLine

“************************************************* ******************************”

OutPutFile.WriteBlankLines (1)

OutPutFile.WriteLine “relatório consolidado sucinto para“& Date () OutPutFile.WriteBlankLines

(1) OutPutFile.WriteLine

“************************************************* ******************************”

OutPutFile.WriteBlankLines (1)

OutPutFile.WriteLine “erros:”

OutPutFile.WriteBlankLines (1)

OutPutFile.WriteLine “Data Tempo Código Descrição”

Para Cada intArrayCounter Em astrReportArray

Se Len (intArrayCounter) <> 0 Then

OutPutFile.WriteLine intArrayCounter End If Next

OutPutFile.Close ()

Se strDebug = “True” Então

MsgBox “Feito escrito ao Relatório Resumido” End If

End Sub
410 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

O WriteToEventLog () subrotina
o WriteToEventLog () sub-rotina, mostrado abaixo, o instancia WshShell
objeto e usa seu RegistrarEvento () método para gravar uma mensagem no log de eventos do aplicativo do Windows.

A mensagem é atribuído um valor de 4, tornando-se uma mensagem informativa. Finalmente, se o script é

executado no modo de depuração, o MsgBox () função é usada para exibir uma mensagem pop-up mostrando que

este procedimento foi executado.

Sub WriteToEventLog ()

WshShl Dim

Definir WshShl = WScript.CreateObject ( “WScript.Shell”)

'4 indica uma mensagem de informação

WshShl.LogEvent 4, “O Erro Diário Log Analyzer Script agora está em execução.”

Se strDebug = “True” Então

MsgBox “mensagem de log de eventos foi gravada” End If

End Sub

NOTA

Para escrever mensagens de erro no log de eventos do aplicativo Windows, você precisa saber como trabalhar com o WshShell
objeto de RegistrarEvento () método. Embora este capítulo usa este método para demonstrar como escrever mensagens de
log de eventos, não é coberto em grande detalhe. Para instruções detalhadas sobre como trabalhar com o RegistrarEvento () método,
leia o Capítulo 20, “manter um registro Arquivo de 30 dias.”

Criando o Diário de Vendas Relatório


Analyzer
Como o script analisador de log de erro, o script analisador relatório de vendas diário lê o arquivo RptLog.ini

localizado em D: \ VBScripts \ Analisadores. Especificamente, ele processa a

[Vendas diárias] secção como mostrado no exemplo a seguir.


DESENVOLVIMENTO ANALISADORES SCRIPT LOG Capítulo 18 411

[Vendas diárias]

SourDir = d: \ Order_Inventory \ Logs \ DailySales.txt ReportOn =

SummaryOnly EventLog = True

Destfile = d: \ Order_Inventory \ SummaryRpts \ Debug =

False

Uma vez que suas configurações foram lidos, o script processa o DailySales.txt arquivo
localizado na D: \ Order_Inventory \ logs, como mostrado abaixo.

*******************************************************************************

As vendas diárias 3/15/03

*******************************************************************************

Vendas matérias:

Part # Quantidade Descrição Cust #

1. 58694 12 leitor temperatura Cordless 10034

2. 45643 2 bomba magnética 200hp 10055

3. 17443 5 20 caixa de lb de clipes de bomba 10105

4. 10344 10 48 onças garrafa solvente 10003

5. 45643 1 bomba magnética 200hp 10003

6. 17443 10 20 caixa de lb de clipes de bomba 10003

7. 58694 5 leitor temperatura Cordless 10111

8. 10344 25 48 onças garrafa solvente 10054

9. 19365 2 furadeira elétrica 3 velocidade 10034

10. 58694 2 leitor temperatura Cordless 10103

Número total de pedidos de venda = 10

-------------------------------------------------------------------------------

resumo de vendas por número de peça:

Part # Quantidade Descrição


412 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

1. 58694 19 leitor temperatura Cordless

2. 45643 3 bomba magnética 200hp

3. 17443 15 20 caixa de lb de clipes de bomba

4. 10344 35 48 onças garrafa solvente

5. 19365 2 3-velocidade berbequim

O script analisador relatório diário de Vendas, mostrado abaixo, está estruturado de forma muito semelhante ao script

analisador de log de erro.

'************************************************* ************************ 'Script Nome: 18.2.vbs script' Autor: Jerry

Ford 'Criado: 03/22/03

'Descrição: Este script recupera as definições de configuração de um arquivo INI,' processa um arquivo de

relatório, e cria um arquivo de relatório Resumo. '************************************************* ************************

'Seção de inicialização

Option Explicit

Dim FsoObject, strSourceFile, OpenFile, strInputLine, intCounter Dim strSourDir, strReportOn,

strEventLog, strDestFile, strDebug

ReDim astrReportArray (0)

Const cForReading = 1 const

cForWriting = 2 const

cForAppending = 8

Definir FsoObject = WScript.CreateObject ( “Scripting.FileSystemObject”)

strSourceFile = “d: \ VBScripts \ Analisadores \ RptLog.ini”

'Secção de Processamento Principal

Padrões de configuração()
DESENVOLVIMENTO ANALISADORES SCRIPT LOG Capítulo 18 413

ProcessIniFile ()

RefineOutputFileName ()

Se strEventLog = “True” Então

WriteToEventLog () End

If

ProcessReportFile ()

RecordSummaryData ()

'Terminar roteiro WScript.Quit execução

()

'Secção Procedimento

SetUpDefaults sub ()

strSourDir = “d: \ Order_Inventory \ Logs \ DailySales.txt” strReportOn = “All”

strEventLog = “false”

strDestFile = “d: \ Order_Inventory \ SummaryRpts \” strDebug = “false”

End Sub

Sub ProcessIniFile ()

Dim strKeyName, intGetEqualsPosition

If (FsoObject.FileExists (strSourceFile)) então

Definir OpenFile = FsoObject.OpenTextFile (strSourceFile, cForReading)

Do Until Mid (strInputLine, 1, 15) = “[DailySales]”

strInputLine = OpenFile.ReadLine
414 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

laço

Do Until OpenFile.AtEndOfStream = “True”

strInputLine = OpenFile.ReadLine

Se Mid (strInputLine, 1, 1) = “[” Então

Sair não

End If

Se Len (strInputLine) <> 0 Then

intGetEqualsPosition = Instr (strInputLine, “=”) = strKeyName de idade (strInputLine, 1,

intGetEqualsPosition - 1)

Select Case strKeyName

Caso “SourDir”

strSourDir = idade (strInputLine, intGetEqualsPosition + 1, _

Len (strInputLine)) Caso

“ReportOn”

strReportOn = idade (strInputLine, intGetEqualsPosition + 1, _

Len (strInputLine)) Caso

“EventLog”

strEventLog = idade (strInputLine, intGetEqualsPosition + 1, _

Len (strInputLine)) Caso

“destfile”

strDestFile = Mid (strInputLine, intGetEqualsPosition + 1, _ Len (strInputLine)) Caso

“Debug”

strDebug = idade (strInputLine, intGetEqualsPosition + 1, _

Len (strInputLine)) End Select

Fim se

laço

OpenFile.Close ()

Fim se
DESENVOLVIMENTO ANALISADORES SCRIPT LOG Capítulo 18 415

Se strDebug = “True” Então

MsgBox “strSourDir =“& strSourDir MsgBox

“strReportOn =“& strReportOn MsgBox “strEventLog =“&

strEventLog MsgBox “strDestFile =“& strDestFile

MsgBox “strDebug =“& strDebug End If

End Sub

Sub RefineOutputFileName ()

DataString Dim

DataString = Replace (Date () “/”, “-”)

strDestFile = strDestFile & DataString & “_SumRpt.txt”

End Sub

Sub ProcessReportFile ()

Dim fileref, strRptLine, intGetFirstBlankPosition, outputfile

Dim intArrayCounter

intArrayCounter = 0

If (FsoObject.FileExists (strSourDir)) então

Definir fileref = FsoObject.OpenTextFile (strSourDir, cForReading) Do While Falso =

FileRef.AtEndOfStream

Se strReportOn = “SummaryOnly” Então

Do Until Mid (strRptLine, 1, 13) = “Resumo de Vendas”

strRptLine = FileRef.ReadLine () loop

FileRef.SkipLine ()

FileRef.SkipLine ()
416 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

FileRef.SkipLine ()

Do Until FileRef.AtEndOfStream

strRptLine = FileRef.ReadLine ()

intGetFirstBlankPosition = Instr (strRptLine, ““) = strRptLine de idade (strRptLine,

intGetFirstBlankPosition + 1)

ReDim Preservar astrReportArray (intArrayCounter) astrReportArray

(intArrayCounter) = strRptLine

Se strDebug = “True” Então

MsgBox "Armazenamento 'e strRptLine &“' na matriz astrReportArray”End If

intArrayCounter = intArrayCounter + 1 Loop Logo

Do Until FileRef.AtEndOfStream

strRptLine = FileRef.ReadLine () ReDim Preservar astrReportArray

(intArrayCounter) astrReportArray (intArrayCounter) = strRptLine

Se strDebug = “True” Então

MsgBox “Armazenamento“e strRptLine & ‘na matriz astrReportArray’ End If

intArrayCounter = intArrayCounter + 1 Loop End If loop

FileRef.Close ()

Outro

astrReportArray (intArrayCounter) = “file DailySales.txt não estava disponível.” End If End Sub
DESENVOLVIMENTO ANALISADORES SCRIPT LOG Capítulo 18 417

Sub RecordSummaryData ()

Dim intArrayCounter, outputfile, strMessage

intArrayCounter = 0

Definir outputFile = FsoObject.OpenTextFile (strDestFile, 8)

Se strDebug = “True” Então

MsgBox “Agora escrevendo para o relatório de síntese” End If

OutPutFile.WriteBlankLines (1)

OutPutFile.WriteLine “---------------------------------------------” & _

“----------------------------------”

OutPutFile.WriteBlankLines (1)

Se strReportOn = “SummaryOnly” Então

OutPutFile.WriteLine “Resumo de vendas:”

OutPutFile.WriteBlankLines (1)

OutPutFile.WriteLine “Part # Qty Descrição”

OutPutFile.WriteBlankLines (1) End If

Para Cada intArrayCounter Em astrReportArray

OutPutFile.WriteLine intArrayCounter Seguinte

OutPutFile.Close ()

Se strDebug = “True” Então

MsgBox “Feito escrito ao Relatório Resumido” End If

End Sub

Sub WriteToEventLog ()
418 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

WshShl Dim

Definir WshShl = WScript.CreateObject ( “WScript.Shell”)

'4 indica uma mensagem de informação

WshShl.LogEvent 4, “The Daily Vendas Relatório Analisador de Script está agora em execução.”

Se strDebug = “True” Então

MsgBox “mensagem de log de eventos foi gravada” End If

End Sub

Uma das áreas onde o script diário de vendas relatório analisador difere dos scripts de analisador de
log de erro está em seus ajustes variáveis ​padrão, que são especificados no Padrões de configuração() sub-rotina.
Também o ProcessIniFile () sub-rotina foi modificado para procurar o [ Vendas diárias] cabeçalho. Além
disso, o
ProcessReportFile () sub-rotina foi modificado para procurar o Resumo de vendas seção do
relatório diário de vendas e processar todas as entradas nessa seção. Uma última diferença
significativa entre os dois analisadores é no
RecordSummaryData () sub-rotina, em que o relatório de síntese é aberto no
ForAppending modo, em vez de na Para escrever modo.

Criando o Daily Retorna Relatório Analyzer

O script analisador relatório retornos diários é quase idêntico ao script analisador relatório de
vendas Daily. Ambos ler a RptLog.ini arquivo localizado na

D: \ VBScripts \ Analisadores. No entanto, o Daily Retorna roteiro analisador relatório processa o [ DailyReturns]
secção, como mostrado abaixo.

[] DailyReturns

SourDir = d: \ Order_Inventory \ Logs \ DailyReturns.txt ReportOn =

SummaryOnly EventLog = True

Destfile = d: \ Order_Inventory \ SummaryRpts \ Debug =

False
DESENVOLVIMENTO ANALISADORES SCRIPT LOG Capítulo 18 419

Uma vez que suas configurações foram lidos, o script processa o arquivo DailyReturns.txt, localizado na D:
\ Order_Inventory \ Logs como mostrado abaixo.

*******************************************************************************

retornos diários 3/15/03

*******************************************************************************

Retorna-primas:

Part # Quantidade Descrição Cust #

1. 58694 1 leitor temperatura Cordless 10045

2. 17443 2 20 caixa de lb de clipes de bomba 10103

3. 10344 4 48 onças garrafa solvente 10111

4. 45643 1 bomba magnética 200hp 10056

5. 19365 1 furadeira elétrica 3 velocidade 10092

6. 58694 1 leitor temperatura Cordless 10007

7. 17443 3 20 caixa de lb de clipes de bomba 10007

8. 17.443 2 20 caixa de lb de clipes de bomba 10150

número total de pedidos de retorno = 8

-------------------------------------------------------------------------------

Voltar resumo pelo número de peça:

Part # Quantidade Descrição

1. 58694 2 leitor temperatura Cordless

2. 17443 7 20 caixa de lb de clipes de bomba

3. 10344 4 48 onças garrafa solvente

4. 45643 1 bomba magnética 200hp

5. 19365 1 furadeira elétrica 3 velocidade

O script analisador relatório retornos diários, mostrado na página seguinte, é estruturado de forma muito semelhante

ao script analisador relatório de vendas Daily.


420 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

'************************************************* ************************ 'Script Nome: 18.1.vbs script' Autor: Jerry

Ford 'Criado: 03/22/03

'Descrição: Este script recupera as definições de configuração de um arquivo INI,' processa um arquivo de

relatório, e cria um arquivo de relatório Resumo. '************************************************* ************************

'Seção de inicialização

Option Explicit

Dim FsoObject, strSourceFile, OpenFile, strInputLine, intCounter Dim strSourDir, strReportOn,

strEventLog, strDestFile, strDebug

ReDim astrReportArray (0)

Const cForReading = 1 const

cForWriting = 2 const

cForAppending = 8

Definir FsoObject = WScript.CreateObject ( “Scripting.FileSystemObject”)

strSourceFile = “d: \ VBScripts \ Analisadores \ RptLog.ini”

'Secção de Processamento Principal

Padrões de configuração()

ProcessIniFile ()

RefineOutputFileName ()

Se strEventLog = “True” Então

WriteToEventLog () End

If
DESENVOLVIMENTO ANALISADORES SCRIPT LOG Capítulo 18 421

ProcessReportFile ()

RecordSummaryData ()

'Terminar roteiro WScript.Quit execução

()

'Secção Procedimento

SetUpDefaults sub ()

strSourDir = “d: \ Order_Inventory \ Logs \ DailyReturns.txt” strReportOn = “All”

strEventLog = “false”

strDestFile = “d: \ Order_Inventory \ SummaryRpts \” strDebug = “false”

End Sub

Sub ProcessIniFile ()

Dim strKeyName, intGetEqualsPosition

If (FsoObject.FileExists (strSourceFile)) então

Definir OpenFile = FsoObject.OpenTextFile (strSourceFile, cForReading)

Do Until Mid (strInputLine, 1, 15) = “[DailyReturns]”

strInputLine = OpenFile.ReadLine loop

Do Until OpenFile.AtEndOfStream = “True”

strInputLine = OpenFile.ReadLine

Se Mid (strInputLine, 1, 1) = “[” Então

Sair não

End If
422 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

Se Len (strInputLine) <> 0 Then

intGetEqualsPosition = Instr (strInputLine, “=”) = strKeyName de idade (strInputLine, 1,

intGetEqualsPosition - 1)

Select Case strKeyName

Caso “SourDir”

strSourDir = idade (strInputLine, intGetEqualsPosition + 1, _

Len (strInputLine)) Caso

“ReportOn”

strReportOn = idade (strInputLine, intGetEqualsPosition + 1, _

Len (strInputLine)) Caso

“EventLog”

strEventLog = idade (strInputLine, intGetEqualsPosition + 1, _

Len (strInputLine)) Caso

“destfile”

strDestFile = idade (strInputLine, intGetEqualsPosition + 1, _

Len (strInputLine)) Caso

“Debug”

strDebug = idade (strInputLine, intGetEqualsPosition + 1, _

Len (strInputLine)) End Select

Fim se

laço

OpenFile.Close ()

Fim se

Se strDebug = “True” Então

MsgBox “strSourDir =“& strSourDir MsgBox

“strReportOn =“& strReportOn MsgBox “strEventLog =“&

strEventLog MsgBox “strDestFile =“& strDestFile

MsgBox “strDebug =“& strDebug End If


DESENVOLVIMENTO ANALISADORES SCRIPT LOG Capítulo 18 423

End Sub

Sub RefineOutputFileName ()

DataString Dim

DataString = Replace (Date () “/”, “-”)

strDestFile = strDestFile & DataString & “_SumRpt.txt”

End Sub

Sub ProcessReportFile ()

Dim fileref, strRptLine, intGetFirstBlankPosition, outputfile

Dim intArrayCounter

intArrayCounter = 0

If (FsoObject.FileExists (strSourDir)) então

Definir fileref = FsoObject.OpenTextFile (strSourDir, cForReading) Do While Falso =

FileRef.AtEndOfStream

Se strReportOn = “SummaryOnly” Então

Do Until Mid (strRptLine, 1, 14) = “Resumo do Retorno”

strRptLine = FileRef.ReadLine () loop

FileRef.SkipLine ()

FileRef.SkipLine ()

FileRef.SkipLine ()

Do Until FileRef.AtEndOfStream

strRptLine = FileRef.ReadLine ()

intGetFirstBlankPosition = Instr (strRptLine, ““) = strRptLine de idade (strRptLine,

intGetFirstBlankPosition + 1)

ReDim Preservar astrReportArray (intArrayCounter)


424 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

astrReportArray (intArrayCounter) = strRptLine

Se strDebug = “True” Então

MsgBox "Armazenamento 'e strRptLine &“' na matriz astrReportArray”End If

intArrayCounter = intArrayCounter + 1 Loop Logo

Do Until FileRef.AtEndOfStream

strRptLine = FileRef.ReadLine () ReDim Preservar astrReportArray

(intArrayCounter) astrReportArray (intArrayCounter) = strRptLine

Se strDebug = “True” Então

MsgBox “Armazenamento“e strRptLine & ‘na matriz astrReportArray’ End If

intArrayCounter = intArrayCounter + 1 Loop End If loop

FileRef.Close ()

Outro

astrReportArray (intArrayCounter) = “file DailyReturns.txt não estava disponível.” End If End Sub

Sub RecordSummaryData ()

Dim intArrayCounter, outputfile, strMessage

intArrayCounter = 0

Definir outputFile = FsoObject.OpenTextFile (strDestFile, 8)


DESENVOLVIMENTO ANALISADORES SCRIPT LOG Capítulo 18 425

Se strDebug = “True” Então

MsgBox “Agora escrevendo para o relatório de síntese” End If

OutPutFile.WriteBlankLines (1)

OutPutFile.WriteLine “--------------------------------------------” & _

“-----------------------------------”

OutPutFile.WriteBlankLines (1)

Se strReportOn = “SummaryOnly” Então

OutPutFile.WriteLine “Resumo do retorno:”

OutPutFile.WriteBlankLines (1)

OutPutFile.WriteLine “Part # Qty Descrição”

OutPutFile.WriteBlankLines (1) End If

Para Cada intArrayCounter Em astrReportArray

OutPutFile.WriteLine intArrayCounter Seguinte

OutPutFile.Close ()

Se strDebug = “True” Então

MsgBox “Feito escrito ao Relatório Resumido” End If

End Sub

Sub WriteToEventLog ()

WshShl Dim

Definir WshShl = WScript.CreateObject ( “WScript.Shell”)

'4 indica uma mensagem de informação

WshShl.LogEvent 4, “The Daily Retorna Relatório Analisador de Script agora está em execução.”

Se strDebug = “True” Então


426 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

MsgBox “mensagem de log de eventos foi gravada” End If

End Sub

As principais diferenças entre as vendas diárias e retornos diários relatam scripts do analisador são os
seguintes:

◆ ajustes variáveis ​na Padrões de configuração() sub-rotina têm sido modi-


fied.

◆ o ProcessIniFile () subrotina é configurado para processar a chave = par


itens localizados na [ DailyReturns] seção.

Criando o diário Relatório de Produção Analyzer

O analisador diário Relatório de produção é muito semelhante ao das vendas diárias e Daily Retorna scripts
de analisador de relatório. Todos os três ler o arquivo RptLog.ini localizado em D: \ VBScripts \ Analisadores.
No entanto, o analisador diário Relatório de produção processa o [ Produção diária] secção, como mostrado
abaixo.

[Produção diária]

SourDir = d: \ Order_Inventory \ Logs \ DailyProduction.txt EventLog = True

ReportOn = HardAndSupl

Destfile = d: \ Order_Inventory \ SummaryRpts \ Debug =

False

Uma vez que suas configurações foram lidos, o script processa o arquivo DailyProduction.txt localizado em
D: \ Order_Inventory \ Logs como mostrado abaixo.

*******************************************************************************

Produção diária 3/15/03

*******************************************************************************

hardware:
DESENVOLVIMENTO ANALISADORES SCRIPT LOG Capítulo 18 427

Part # Qtde Descrição Em estoque

1. 58694 10 leitor temperatura Cordless 25

2. 45643 2 bomba magnética 200hp 10

3. 19365 5 furadeira elétrica 3 velocidade 10

-------------------------------------------------------------------------------

Suprimentos:

Part # Qtde Descrição Em estoque

1. 17443 20 20 caixa de lb de clipes de bomba 100

2. 10344 100 48 onças garrafa solvente 250

O script analisador relatório de produção diária, mostrado abaixo, está estruturado de forma muito semelhante às vendas

diárias e Daily Retorna scripts de analisador de relatório.

'************************************************* ************************ 'Script Nome: 18.4.vbs script' Autor: Jerry

Ford 'Criado: 03/22/03

'Descrição: Este script recupera as definições de configuração de um arquivo INI,' processa um arquivo de

relatório, e cria um arquivo de relatório Resumo. '************************************************* ************************

'Seção de inicialização

Option Explicit

Dim FsoObject, strSourceFile, OpenFile, strInputLine, intCounter Dim strSourDir, strReportOn,

strEventLog, strDestFile, strDebug

ReDim astrReportArray (0)

Const cForReading = 1 const

cForWriting = 2 const

cForAppending = 8
428 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

Definir FsoObject = WScript.CreateObject ( “Scripting.FileSystemObject”)

strSourceFile = “d: \ VBScripts \ Analisadores \ RptLog.ini”

'Secção de Processamento Principal

Padrões de configuração()

ProcessIniFile ()

RefineOutputFileName ()

Se strEventLog = “True” Então

WriteToEventLog () End

If

ProcessReportFile ()

RecordSummaryData ()

'Terminar roteiro WScript.Quit execução

()

'Secção Procedimento

SetUpDefaults sub ()

strSourDir = “d: \ Order_Inventory \ Logs \ DailyProduction.txt” strReportOn =

“HardAndSupl” strEventLog = “false”

strDestFile = “d: \ Order_Inventory \ SummaryRpts \” strDebug = “false”

End Sub
DESENVOLVIMENTO ANALISADORES SCRIPT LOG Capítulo 18 429

Sub ProcessIniFile ()

Dim strKeyName, intGetEqualsPosition

If (FsoObject.FileExists (strSourceFile)) então

Definir OpenFile = FsoObject.OpenTextFile (strSourceFile, cForReading)

Do Until Mid (strInputLine, 1, 17) = “[DailyProduction]”

strInputLine = OpenFile.ReadLine loop

Do Until OpenFile.AtEndOfStream = “True”

strInputLine = OpenFile.ReadLine

Se Mid (strInputLine, 1, 1) = “[” Então

Sair não

End If

Se Len (strInputLine) <> 0 Then

intGetEqualsPosition = Instr (strInputLine, “=”) = strKeyName de idade (strInputLine, 1,

intGetEqualsPosition - 1)

Select Case strKeyName

Caso “SourDir”

strSourDir = idade (strInputLine, intGetEqualsPosition + 1, _

Len (strInputLine)) Caso

“ReportOn”

strReportOn = idade (strInputLine, intGetEqualsPosition + 1, _

Len (strInputLine)) Caso

“EventLog”

strEventLog = idade (strInputLine, intGetEqualsPosition + 1, _

Len (strInputLine)) Caso

“destfile”

strDestFile = idade (strInputLine, intGetEqualsPosition + 1, _

Len (strInputLine)) Caso

“Debug”

strDebug = idade (strInputLine, intGetEqualsPosition + 1, _

Len (strInputLine)) End Select


430 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

Fim se

laço

OpenFile.Close ()

Fim se

Se strDebug = “True” Então

MsgBox “strSourDir =“& strSourDir MsgBox

“strReportOn =“& strReportOn MsgBox “strEventLog =“&

strEventLog MsgBox “strDestFile =“& strDestFile

MsgBox “strDebug =“& strDebug End If

End Sub

Sub RefineOutputFileName ()

DataString Dim

DataString = Replace (Date () “/”, “-”)

strDestFile = strDestFile & DataString & “_SumRpt.txt”

End Sub

Sub ProcessReportFile ()

Dim fileref, strRptLine, intGetFirstBlankPosition, outputfile

Dim intArrayCounter

intArrayCounter = 0

If (FsoObject.FileExists (strSourDir)) então

Definir fileRef = FsoObject.OpenTextFile (strSourDir, cForReading)


DESENVOLVIMENTO ANALISADORES SCRIPT LOG Capítulo 18 431

'Do While Falso = FileRef.AtEndOfStream

Se Instr (1, strReportOn, “Hard”) Then

Do Until Mid (strRptLine, 1, 8) = “Hardware”

strRptLine = FileRef.ReadLine () loop

FileRef.SkipLine ()

FileRef.SkipLine ()

FileRef.SkipLine ()

Do Until FileRef.AtEndOfStream

strRptLine = FileRef.ReadLine ()

intGetFirstBlankPosition = Instr (strRptLine, ““) = strRptLine de idade (strRptLine,

intGetFirstBlankPosition + 2)

Se Esquerda (strRptLine, 1) = “-” Então

Saia Do

End If

ReDim Preservar astrReportArray (intArrayCounter) astrReportArray

(intArrayCounter) = strRptLine

Se strDebug = “True” Então

MsgBox "Armazenamento 'e strRptLine &“' na matriz astrReportArray”End If

intArrayCounter = intArrayCounter + 1 Loop End If

Se Instr (1, strReportOn “Supl”) Then

Fazer até Mid (strRptLine, 1, 8) = “Suprimentos”

strRptLine = FileRef.ReadLine () loop

FileRef.SkipLine ()

FileRef.SkipLine ()
432 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

FileRef.SkipLine ()

Do Until FileRef.AtEndOfStream

strRptLine = FileRef.ReadLine ()

intGetFirstBlankPosition = Instr (strRptLine, ““) = strRptLine de idade (strRptLine,

intGetFirstBlankPosition + 2)

Se Esquerda (strRptLine, 1) = “-” Então

Saia Do

End If

ReDim Preservar astrReportArray (intArrayCounter) astrReportArray

(intArrayCounter) = strRptLine

Se strDebug = “True” Então

MsgBox "Armazenamento 'e strRptLine &“' na matriz astrReportArray”End If

intArrayCounter = intArrayCounter + 1 Loop

End If 'loop

FileRef.Close ()

Outro

astrReportArray (intArrayCounter) = “file DailyProducton.txt não estava disponível.” End If End Sub

Sub RecordSummaryData ()

Dim intArrayCounter, outputfile, strMessage

intArrayCounter = 0

Definir outputFile = FsoObject.OpenTextFile (strDestFile, 8)


DESENVOLVIMENTO ANALISADORES SCRIPT LOG Capítulo 18 433

Se strDebug = “True” Então

MsgBox “Agora escrevendo para o relatório de síntese” End If

OutPutFile.WriteBlankLines (1)

OutPutFile.WriteLine “--------------------------------------------” & _

“-----------------------------------”

OutPutFile.WriteBlankLines (1)

OutPutFile.WriteLine “Resumo Diário de Produção”

OutPutFile.WriteBlankLines (1)

OutPutFile.WriteLine “Part # Quantidade Descrição Em estoque"

OutPutFile.WriteBlankLines (1)

Para Cada intArrayCounter Em astrReportArray

Se Len (intArrayCounter) <> 0 Then

OutPutFile.WriteLine intArrayCounter End If Next

OutPutFile.Close ()

Se strDebug = “True” Então

MsgBox “Feito escrito ao Relatório Resumido” End If

End Sub

Sub WriteToEventLog ()

WshShl Dim

Definir WshShl = WScript.CreateObject ( “WScript.Shell”)

'4 indica uma mensagem de informação

WshShl.LogEvent 4, “The Daily Relatório de Produção Analyzer Script agora está em execução.”
434 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

Se strDebug = “True” Então

MsgBox “mensagem de log de eventos foi gravada” End If

End Sub

As principais diferenças entre a produção diária e as vendas diárias e scripts do analisador relatório
retornos diários são as seguintes:

◆ ajustes variáveis ​na Padrões de configuração() sub-rotina têm sido modi-


fied.

◆ o ProcessIniFile () subrotina é configurado para processar a chave = par


itens localizados na [ Produção diária] seção.
◆ o ProcessReportFile () sub-rotina é projetado para procurar e
processar o ferragens e Programas seções do relatório de produção diária.

Examinando o Relatório Resumo do Pedido /


Inventário
Os scripts do analisador de quatro relatórios e log acabará por ser configurado para executar de forma automatizada.

Os scripts serão executados sequencialmente, com o relatório de erro processado, primeiro seguido pelas vendas

diárias e relatórios de retornos diários e, finalmente, os relatórios de produção diária. O seguinte relatório de síntese de

exemplo mostra como um relatório de síntese típico vai olhar uma vez que todos os scripts foram executados.

*******************************************************************************

relatório consolidado sucinto para 2003/03/23

*******************************************************************************

erros:

Encontro Tempo código Descrição

12:15:44 3/15/03 001 Não é possível acessar leitor de cartão em wkstn442 dispositivo
DESENVOLVIMENTO ANALISADORES SCRIPT LOG Capítulo 18 435

14:00:14 3/15/03 001 Nenhum inventário para a parte # 58694 - incapaz de preencher ordem 39312 16:16:46 3/15/03

003 Impossível imprimir rpt resumo sobre mestre impressor (sem papel)

-------------------------------------------------------------------------------

resumo de vendas:

Part # Quantidade Descrição

58694 19 leitor temperatura Cordless

45643 3 bomba magnética 200hp

17443 15 20 caixa de lb de clipes de bomba

10344 35 48 onças garrafa solvente

19365 2 furadeira elétrica 3 velocidade

-------------------------------------------------------------------------------

resumo do retorno:

Part # Quantidade Descrição

58694 2 leitor temperatura Cordless

17443 7 20 caixa de lb de clipes de bomba

10344 4 48 onças garrafa solvente

45643 1 bomba magnética 200hp

19365 1 furadeira elétrica 3 velocidade

-------------------------------------------------------------------------------

Resumo produção diária

Part # Quantidade Descrição Em estoque

58694 10 leitor temperatura Cordless 25

45643 2 bomba magnética 200hp 10

19365 5 furadeira elétrica 3 velocidade 10

17443 20 20 caixa de lb de clipes de bomba 100

10344 100 48 onças garrafa solvente 250


436 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

resumo
Neste capítulo, você aprendeu a ler e relatório de processos e arquivos de log. Você desenvolveu uma coleção de
scripts que processados ​estes relatórios e arquivos com base em configurações armazenadas em um arquivo INI
log e, em seguida, criou um relatório de síntese, consolidando as informações obtidas a partir do relatório e
arquivos de log. Como resultado, você tem demonstrado uma compreensão de como aplicar VBScript para resolver
um problema do mundo real que teria envolvido muito mais esforço para resolver usando uma linguagem de
programação mais tradicional.
Capítulo 19
Execução agendamento
Script
Eu n Neste capítulo, Molly vai escrever um novo script que ela irá então executar a cada 24 horas usando o
Agendador de Tarefas do Windows. Este script, uma vez executado, será responsável pela execução de cada um dos
relatório e log scripts do analisador sequencialmente. Como você passar por este capítulo, você vai saber por que Molly
escolheu para criar um script de agendamento em vez de simplesmente configurar cada um o relatório e log roteiros
Analyzer como tarefas agendadas independentes. Você também vai aprender a trabalhar com o Assistente de tarefas
agendadas.

Examinando as opções de programação VBScript


Agora que Molly já terminou de escrever e testar cada um o relatório e log scripts do analisador, ela precisa
configurar sua execução automatizada. Para realizar essa tarefa, ela planeja usar o serviço Agendador de
tarefas embutido. Molly decidiu usar o Assistente de tarefa agendada para definir o cronograma de execução
para o relatório e arquivos de log.

Molly aprendeu que para que seus scripts sejam executados com as permissões de segurança apropriadas e
privilégios quando executam, ela terá de criar uma conta de usuário especial, que ela chama de conta de
serviço, e, em seguida, associar essa conta com suas tarefas agendadas. Molly já criou uma nova conta de
usuário a ser usado para executar quaisquer scripts que precisam para executar em um cronograma
automatizado. Ela nomeou esta conta ScriptSchlr e configurá-lo como uma conta de administrador local no
Windows 2000 Server onde o sistema de pedidos / inventário reside.

Criando uma tarefa agendada para cada script


Molly descobriu que, a fim de configurar a execução programada de cada script individualmente,
ela terá que repetidamente executar o Assistente de tarefas agendadas e associar cada script
indivíduo para executar usando o ScriptSchlr conta. Apesar de não ser uma tarefa difícil de realizar,
Molly está preocupado com a manutenção a longo prazo desses scripts e do ScriptSchlr conta.
Mesmo que ela criou o ScriptSchlr conta com uma senha que não expira, Molly sabe que ela terá
que alterar manualmente a sua senha no
PROGRAMAÇÃO script de execução Capítulo 19 439

menos uma vez a cada seis meses, a fim de cumprir com a política de auditoria de TI da empresa. Isto
significa que a cada seis meses, ela vai ter que se lembrar de não só mudar o ScriptSchlr a senha de
conta, mas também para ir para a pasta Tarefas agendadas e modificar a tarefa agendada para cada
relatório e roteiro de log. Isso introduz a possibilidade de que ela pode cometer um erro e erra a senha
para um ou mais tarefas agendadas ao modificar sua programação.

Criando um agendamento Script Intermediário


Para simplificar as coisas e para limitar o potencial de acidente, tanto quanto possível quando tem que
mudar o ScriptSchlr a senha de conta, Molly decidiu criar um novo script chamado MstrSched.vbs. Este
script irá assumir a responsabilidade por sequencialmente executar cada do relatório e log scripts do
analisador, como mostrado na Figura 19.1.

FIGURA 19.1 Automatizar a execução de vários scripts de uma única VBScript


440 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

Desta forma, Molly só tem de configurar uma tarefa programada, a fim de configurar a execução
automática de todos o seu relatório e log scripts do analisador, e ela só terá que modificar a senha da
conta para uma tarefa agendada a cada seis meses.

Usando Executar método do objeto WshShell ()


Depois de passar algum tempo a olhar através do arquivo de ajuda do Windows Script Technologies,
Molly se deparou com o Corre() método. Este método pertence à
WshShell objeto e fornece a capacidade de executar um programa ou script como um novo processo. Ele também

fornece a capacidade de esperar em um script criança passar usando o Corre()

método para concluir a execução antes de permitir que o script chamado para continuar sua execução.

NOTA

O arquivo de ajuda do Windows Script Technologies é um arquivo de ajuda livremente para download para o WSH ( O
Windows Script Host). Ele fornece um documento completo do modelo WSH objeto. Além disso, inclui a
documentação completa de VBScript e JScript. Para baixar uma cópia do Windows Script Technologies arquivo de
ajuda, visita
www.microsoft.com/scripting e procure um link chamado Documentação de scripts disponível para
download.

Garantir a execução sequencial de cada script analisador relatório e log é um requisito fundamental para Molly,
pois permite-lhe para criar um script que pode programar a execução de scripts adicionais sequencialmente, a
fim de garantir que apenas um roteiro criança corre de cada vez. Ao forçar o relatório e log roteiros Analyzer
para executar sequencialmente, Molly não precisa se preocupar com quaisquer erros que, de outra forma
ocorrer se dois ou mais do relatório e registrar scripts de analisador tentou acessar e escrever para o relatório
de síntese, ao mesmo tempo.

NOTA

cobertura detalhada do Corre() método é fornecido na seção “Trabalhar com o Prompt de Comando do
Windows” encontrado no capítulo 13, “Manutenção Disk agendamento.”
PROGRAMAÇÃO script de execução Capítulo 19 441

Testando sua hipótese


A fim de garantir que o Corre() método funcionará como ela acha que deveria, Molly decide realizar
um teste rápido e escreve o seguinte script.

'************************************************* ************************ 'Script Nome: 19.1.vbs script' Autor: Jerry

Ford 'Criado: 03/22/03

'Descrição: Este script demonstra a capacidade do objeto WshShell' método run () para sequencialmente

controlar a execução de vários scripts criança'.

'************************************************* ************************

'Seção de inicialização

Option Explicit

On Error Resume Next

WshShl Dim

Definir WshShl = WScript.CreateObject ( “WScript.Shell”)

'Secção de Processamento Principal

WshShl.Run “Notepad”, 1, True

WshShl.Run “Notepad”, 1, True

'Terminar roteiro WScript.Quit execução

()

O script é projetado para chamar o aplicativo bloco de notas, fazer uma pausa durante o tempo que ele executa,

retomar a execução iniciando outra instância do bloco de notas e, em seguida, fazer uma pausa de novo até que o

aplicativo Bloco de notas é fechado. A declaração VBScript que faz este trabalho processo é o seguinte.
442 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

WshShl.Run “Notepad”, 1, True

Além de passar o nome do aplicativo de bloco de notas como um parâmetro para o


Corre() método, mais dois parâmetros são transmitidos. O primeiro parâmetro é um valor numérico que

especifica o estilo do Windows com a qual o aplicativo bloco de notas deve ser aberto. Ao especificar esse
valor como um 1, o script irá abrir o bloco de notas da mesma maneira exata como se fosse iniciado a partir
do menu Iniciar. O segundo parâmetro passado para o script determina se o script deve esperar sobre a
aplicação Bloco de notas para concluir a execução antes de retomar a sua própria execução. Ao definir
este valor igual Verdade, Molly assegura a execução sequencial de ambos os exemplos da aplicação do
bloco de notas. Se ela tivesse feito o valor do segundo parâmetro igual a Falso, ambas as instâncias da
aplicação Notepad teria aberto ao mesmo tempo.

Monitorização processos de fundo


Quando Molly executado seu script de teste, ela viu a primeira janela Bloco de notas aparecer. Para verificar se seu

VBScript estava esperando no fundo para a aplicação Bloco de notas para ser fechada, ela abriu o utilitário

Gerenciador de Tarefas do Windows e verificou que o roteiro ainda estava sendo executado, como mostrado na

Figura 19.2.

WScript.exe

FIGURA 19.2 Verificando que o VBScript ainda está em execução como uma tarefa em segundo plano
PROGRAMAÇÃO script de execução Capítulo 19 443

Porque ela executou o script a partir do desktop do Windows, ela foi processada por padrão usando o WScript.exe
hospedeiro execução. Embora o script não aparecem na lista de processos ativos exibido pelo utilitário
Gerenciador de tarefas, a presença de um ativo WScript.exe host-quando a execução ela sabe que há
outros scripts estão atualmente em execução, é suficiente para ela se inferir que o seu script de teste
ainda está em execução em segundo plano. Ao deixar o utilitário Gerenciador de tarefas visível como ela
fecha a primeira e segunda instâncias da aplicação Notepad, Molly é capaz de testemunhar o término do
VBScript de teste.

Configurar um agendamento Script Intermediário

Agora que Molly está confiante de que ela pode usar o WshShell objeto de Corre()
método para impor a execução sequencial do relatório e log scripts do analisador, ela começa trabalhar no
desenvolvimento do script MstrSched.vbs. Para completar o desenvolvimento deste roteiro, Molly também
terá que aprender a trabalhar com um número de novas built-in VBScript funções, como discutido nas
seções seguintes.

Criando Logic para limitar quando o script é possível executar


Molly planos para criar um único script que irá controlar a execução de ambos o seu relatório e log
analisadores de arquivos e um script de gestão de arquivos que precisa ser executado no primeiro dia de
cada month.Molly planeja usar o built-in VBScript Dia() e
Encontro() funções para garantir que o script de gerenciamento de arquivo, que é nomeado

ArchiveManager.vbs, executará somente no primeiro dia de cada forma month.This Molly pode escrever um

único script que pode lidar com o agendamento da execução do


MstrSched.vbs todos os dias para executar o relatório e log scripts do analisador, e ainda

acomodar a execução mensal do script de gestão de arquivo. A sintaxe do Encontro() , que


devolve a data actual do sistema, é descrito a seguir.

Encontro()

Quando executado, ele devolve a data actual do sistema sob a forma de mm / dd / aaaa, tal como demonstrado abaixo.

strTodaysDate = Data () MsgBox

strTodaysDate
444 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

Quando executado, a instrução VBScript anterior exibe uma caixa de diálogo pop-up, como demonstrado na
Figura 19.3.

FIGURA 19.3 usando o Encontro() função para exibir a data atual do sistema

Uma maneira de usar as informações retornadas pela Encontro() função é determinar se ou não um
VBScript está sendo executado no primeiro dia do mês seria de analisar o valor do campo de dia e
determinar se ele é igual a 1. Uma maneira mais fácil de conseguir isso mesmo resultado é usar o
valor retornado pelo Encontro() função como entrada para o Dia() função. o Dia() função retorna um
valor numérico que indica o dia do mês. A sintaxe para o Dia() função é descrita abaixo.

Day (Date)

Encontro representa qualquer expressão especifica que uma data. Portanto, enrolando-se o Encontro() função

dentro do Dia() função, como mostrado abaixo, você pode facilmente determinar o dia atual do mês.

strTodaysDate = Day (Date ())

Quando executado no primeiro dia do mês, o valor de strTodaysDate


seria definido igual a 1. Ao testar o valor de strTodaysDate, você pode incorporar lógica em um script
que automaticamente termina a sua execução se o dia do mês é definido como algo diferente de 1.

Escrevendo o roteiro MstrSched.vbs


o MstrSched.vbs script é muito básica na sua concepção. Dado o papel relativamente simples do script e seu
cronograma de desenvolvimento apertado projeto, Molly optou por não gastar muito tempo com ele ou dar-lhe
muitos sinos e assobios. Por exemplo, ela não vê a necessidade de exteriorizar suas configurações, nem se
adicionar lógica extra para sub-rotinas que aceitam argumentos a fim de validar o recebimento de quaisquer
argumentos ou sua validade.
PROGRAMAÇÃO script de execução Capítulo 19 445

A seção de inicialização
Do script Inicialização Seção, mostrado abaixo, permite que a interpretação restritiva de nomes de
variáveis ​e a verificação de erros. Esta seção também define e instancia o WshShell objeto.

Option Explicit On Error

Resume Next

WshShl Dim

Definir WshShl = WScript.CreateObject ( “WScript.Shell”)

A Seção de Processamento Principal


o Seção de Processamento principal, mostrado abaixo, começa com uma série de quatro chamadas de
procedimento para uma sub-rotina chamada RunScript (). Esta sub-rotina aceita um argumento, o nome de
um script para executar. Cada um destes quatro declarações passa o RunScript () sub-rotina um nome de
script diferente. Porque o
MstrSched.vbs script será executado diariamente, estes quatro scripts sempre será processado e sua

execução ocorrerá sequencialmente. Os próximos várias linhas do


Seção de Processamento Principal são projetados para fornecer para a execução mensal do ArchiveManager.vbs
roteiro. A E se declaração é usada para executar o
Dia() e Encontro() VBScript funções, a fim de assegurar que o Arquivo Manager.vbs script só
será executada no primeiro dia do mês. Finalmente, a última declaração nesta seção usa o WScript
objeto de Sair() método para terminar a execução do script.

RunScript ( “ErrorAnalyzer.vbs”) RunScript (

“SalesAnalyzer.vbs”) RUNSCRIPT (

“ReturnsAnalyzer.vbs”) RUNSCRIPT (

“ProductionAnalyzer.vbs”)

Se Day (Date ()) = 1 Then

RunScript ( “ArchiveManager.vbs”) End If

'Terminar roteiro WScript.Quit execução

()
446 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

O RunScript () subrotina
o RunScript () sub-rotina, ilustrada a seguir, consiste em três indicações. A primeira declaração identifica o nome
da sub-rotina e define argumento de entrada do procedimento. Este argumento representa o nome de um script
analisador relatório ou log e é usado pelo Corre() método para especificar o nome do script a ser executado.
Cada script executado por este sub-rotina é executado como uma tarefa de fundo. Além disso, este script irá
esperar por cada um dos scripts que ele chama de completar antes de retornar controle de processamento de
volta para a declaração que o chamou.

Sub RunScript (ScriptName)

WshShl.Run ScriptName, 1, True End Sub

O WriteToEventLog () subrotina
o WriteToEventLog () sub-rotina, ilustrada a seguir, utiliza o WshShell objeto
RegistrarEvento () método para armazenar um evento de mensagem no log de eventos do aplicativo Windows. Desta forma,

Molly pode verificar a execução do script, examinando o log do sistema, o que ela pode fazer remotamente a partir de sua

área de trabalho do Windows XP Professional usando o Visualizador de eventos snap-in encontrado no console de

gerenciamento do computador.

Sub WriteToEventLog ()

WshShl.LogEvent 4, “Relatório e Log Analyzer Scheduler Script execução.” End Sub

NOTA

O Visualizador de eventos snap-in encontrado no console de gerenciamento do computador é iniciado no Windows XP


Professional, clicando em Iniciar, clique com o botão direito em Meu Computador e selecionando Gerenciar no menu de
contexto que aparece. Isso abre o console de gerenciamento do computador. Para visualizar o log do aplicativo em um
Windows 2000 Server para o qual você tem os direitos de segurança apropriadas e permissões, clique com botão direito no
nó Gerenciamento do Computador (Local) no topo da árvore do console e selecione Conectar a outro computador. Em
seguida, fornecer o nome ou endereço IP do outro computador e clique em OK. Tudo que você tem a fazer é expandir o nó
Ferramentas do sistema, seguido pelo nó Visualizador de eventos e, em seguida, selecione o nó de aplicativos para exibir os
eventos armazenados em aplicações do computador remoto de log.
PROGRAMAÇÃO script de execução Capítulo 19 447

The Script totalmente montado


Toda a VBScript é montada abaixo. Quando executado, ele será executado cada um o relatório e log scripts
do analisador sequencialmente. Além disso, no primeiro dia de cada mês, ele irá executar o script de gestão
de arquivo.

'************************************************* ************************ 'Script Nome: 19.1.vbs script' Autor: Jerry

Ford 'Criado: 03/22/03

'Descrição: Este script é executado o relatório e log scripts do analisador', um de cada vez, esperando em cada

para completar antes de executar o próximo script. '*************************************************

************************

'Seção de inicialização

Option Explicit On Error

Resume Next

WshShl Dim

Definir WshShl = WScript.CreateObject ( “WScript.Shell”)

'Secção de Processamento Principal

RunScript ( “ErrorAnalyzer.vbs”) RunScript (

“SalesAnalyzer.vbs”) RUNSCRIPT (

“ReturnsAnalyzer.vbs”) RUNSCRIPT (

“ProductionAnalyzer.vbs”)

Se Day (Date ()) = 1 Then

RunScript ( “ArchiveManager.vbs”) End If

'Terminar roteiro WScript.Quit execução

()
448 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

'Secção Procedimento

Sub RunScript (ScriptName)

WshShl.Run ScriptName, 1, True End Sub

Sub WriteToEventLog ()

WshShl.LogEvent 4, “Relatório e Log Analyzer Scheduler Script execução.” End Sub

Configurando um Cronograma de Execução diário


Automated Script
Agora que seu roteiro foi escrito, Molly precisa criar uma tarefa agendada para executá-lo todas as
manhãs, que ela decidiu fazer a 4:00 Os relatórios são geralmente pronto para processamento à meia-noite
de cada dia e o trabalho de backup noturno que runs próximos no servidor é tipicamente terminou às 02h00
Molly figuras que, adicionando um adicional de duas horas, ela será capaz de executar seus scripts sem ter
que se preocupar se os relatórios estão prontos ou se a tarefa de backup ainda está processando.

Molly pensou em criar outro VBScript para configurar a tarefa agendada para o MstrSched.vbs roteiro. No
entanto, dado que esta é uma tarefa de configuração única, ela decidiu que não valia a pena o esforço de
escrever outro script apenas para essa tarefa. Em vez disso, ela vai usar o Assistente de tarefas agendadas,
conforme descrito no procedimento a seguir.

1. Clique em Iniciar e em Painel de Controle. O Painel de Controle é aberta.

2. Clique em Desempenho e manutenção. A pasta Desempenho e manutenção abre.

3. Clique em Tarefas agendadas. A pasta Tarefas agendadas abre, como mostrado na Figura 19.4.
PROGRAMAÇÃO script de execução Capítulo 19 449

FIGURA 19.4 A pasta Tarefas agendadas fornece um ponto focal para a gestão de todas as tarefas agendadas

4. Um ícone é exibido para cada tarefa agendada no momento. Para configurar uma nova tarefa agendada,

clique duas vezes no ícone Adicionar tarefa agendada. O Assistente de tarefa agendada é iniciada. Clique

em Avançar.

5. O assistente pede-lhe para seleccionar um programa para o qual você gostaria de configurar uma programação

automatizada, como mostrado na Figura 19.5.

FIGURA 19.5 O Assistente de tarefas agendadas apresenta automaticamente uma lista de aplicações cuja cution exe- pode ser automatizado
450 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

6. Clique em Browse. Selecionar Programa caixa de diálogo para agendar aparece. Use esta caixa de

diálogo para localizar o MstrSched.vbs roteiro, como mostrado na Figura 19.6.

FIGURA 19.6 Use o Select Programa caixa de diálogo para agendar para localizar o VBScript que você deseja configurar como uma tarefa

agendada

7. Selecione o script e clique em Abrir.

8. O assistente pede-lhe para fornecer o nome para a nova tarefa agendada e para selecionar um tipo de

programação para executá-lo, como mostrado na Figura 19.7. Selecione diário e clique em Avançar.

FIGURA 19.7 O Assistente de tarefas agendadas auxilia na criação de tarefas agendadas usando uma variedade de diferentes horários
PROGRAMAÇÃO script de execução Capítulo 19 451

9. Você será solicitado a fornecer o tempo específico do dia em que a tarefa agendada deve ser
executado, como mostrado na Figura 19.8. Digite 16:00 no campo Start Time. Selecione a
opção Every Day localizado no Execute esta tarefa seção da caixa de diálogo e clique em
Avançar.

FIGURA 19.8 O Assistente de tarefa agendada requer que você especifique uma hora do dia para a execução da tarefa agendada

10. Em seguida, você será solicitado a especificar o nome de uma conta de usuário e sua senha associada,
como mostrado na Figura 19.9. Esta tarefa agendada vai usar os privilégios de acesso da conta do
usuário durante a execução de seus scripts. Molly digitaria ScriptSchlr no campo nome de usuário e
senha da conta em dois campos de senha da caixa de diálogo.

FIGURA 19.9 Fornecer o nome de uma conta de usuário com permissões de segurança suficientes e direitos de acesso para executar seus

scripts
452 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

11. O assistente anuncia que criou com sucesso uma nova tarefa agendada. Clique em
Concluir. A nova tarefa agendada agora aparecerá na pasta Tarefas agendadas.

resumo
Este capítulo explicou por Molly decidiu escrever um novo script que seria responsável pela
execução de cada um dos relatório e log scripts do analisador. Ele demonstrou como criar esse
script usando o WshShell objeto de Corre()
método e explica como usar esse método para impor a execução sequencial de scripts. Este capítulo
também delineou as etapas envolvidas na configuração a execução automática de scripts usando o
Assistente de tarefas agendadas.
Capítulo 20
A manutenção de um
Resumo de 30 dias Log
Archive
Eu n Neste capítulo, você vai aprender como usar os métodos fornecidos pelo FileSystem objeto e Arquivo objetos.
Usando essas informações, você irá desenvolver um VBScript que mantém um arquivo de log de resumo de
30 dias. Além disso, você vai aprender informações detalhadas sobre o WshShell objeto de RegistrarEvento () método
e o VBScript embutido Instr () função.

Gerenciando arquivos com VBScript


O último script que Molly precisa escrever é aquele que vai ser agendada para executar no primeiro dia de cada

mês. Seu trabalho será o de eliminar todos os arquivos de relatório resumo armazenados no D: \ Order_Inventory \

SummaryRpts pasta no servidor Windows 2000 onde o sistema de ordem / estoque é instalado, como demonstrado

na Figura 20.1. Quando executado, os scripts irão determinar o mês atual e, em seguida, apagar todos os

arquivos de relatório de resumo para o mês em que ocorreu há dois meses. Em outras palavras, se o script foi

executado em 1 de Março, seria apagar todos os arquivos de relatório de resumo para o mês de janeiro, deixando

todos os relatórios de Fevereiro no lugar. Além de apagar arquivos de arquivo de idade, este script irá gravar uma

mensagem para o evento aplicativo do Windows log cada vez que é executado. Ele também irá conter a lógica

para impedir sua execução acidental, permitindo apenas a sua execução no primeiro dia de cada mês.

Usando o FileSystemObject
VBScript fornece dois objetos diferentes que possuem métodos que podem ser usados ​para excluir
arquivos. O primeiro é o FileSystemObject objeto de DeleteFile ()
método. Este método oferece a você a capacidade de excluir um ou mais arquivos de uma vez. A sintaxe
deste método é mostrado abaixo.

ObjectReference. DeleteFile ( Nome do arquivo[, Mate])

ObjectReference é a variável que representa um exemplo do Objeto FileSystem. Nome do arquivo é o


nome completo e o caminho do arquivo a ser excluído. caracteres curinga pode ser usado para
especificar a exclusão de mais de um arquivo.
MANTER A 30 DIAS Sumário LOG ARQUIVO Capítulo 20 455

Mês para
eliminar

Mês anterior

Mês atual

FIGURA 20.1 A pasta SummaryRpts é usado para manter uma coleção arquivados de valor dos relatórios de síntese de pelo
menos um mês

Força é um parâmetro opcional que permite a supressão de arquivos somente leitura quando definido igual a Verdade.

NOTA

o FileSystemObject objeto também fornece a capacidade de copiar e mover arquivos usando o seu CopyFile () e DeleteFile
() métodos.

As seguintes declarações do VBScript demonstrar como usar o DeleteFile ()


método, a fim de excluir um arquivo chamado TestFile.txt localizado em D: \ Temp.
456 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

Definir FsoObject = CreateObject ( “Scripting.FileSystemObject”) FsoObject.DeleteFile

“d: \ TestFile.txt Temp \”

NOTA

Um erro ocorrerá se o DeleteFile () método não encontrar pelo menos um arquivo que corresponde aos
critérios especificados no DeleteFile () declaração.

E se TextFile.txt fosse um arquivo somente leitura, então o exemplo anterior seria um fracasso. No entanto, através da

modificação do exemplo, como mostrado abaixo, esta situação pode ser manuseado.

Definir FsoObject = CreateObject ( “Scripting.FileSystemObject”) FsoObject.DeleteFile

“d: \ Temp \ TestFile.txt”, True

Ao adicionar caracteres curinga, você pode excluir mais de um arquivo ao mesmo tempo, como demonstrado abaixo.

Definir FsoObject = CreateObject ( “Scripting.FileSystemObject”) FsoObject.DeleteFile

“d:. \ Temp \ * txt”, True

Neste exemplo, todos os arquivos no D: \ Temp pasta que tem um. TXT extensão de arquivo será excluído.

Usando o objeto de arquivo


Como alternativa à utilização de métodos que pertencem à FileSystemObject objeto, você pode usar métodos

pertencentes à Arquivo objeto. utilização Arquivo métodos de objeto, você pode administrar diretamente os arquivos

individuais. Esses métodos fornecem a capacidade de copiar, mover e apagar arquivos, conforme descrito na Tabela

20.1.

Tabela 20.1 Arquivo Método Métodos de objeto

Descrição

Cópia de() Cópias um arquivo individual ou pasta para um local especificado

Mover() Move um arquivo ou pasta individual para um local especificado

Excluir() Exclui o arquivo ou pasta especificada


MANTER A 30 DIAS Sumário LOG ARQUIVO Capítulo 20 457

NOTA

o Arquivo objeto de Copy (), Move (), e Excluir() métodos são capazes de agir em ambos os arquivos e pastas. Como
resultado, é importante ter cuidado ao trabalhar com esses métodos, porque é fácil, por exemplo, para apagar
acidentalmente uma subpasta localizado na mesma pasta como um arquivo se ambos têm o mesmo nome.

Você pode excluir arquivos individuais usando o Arquivo objeto de Excluir() método. No entanto, porque este
método só suporta a exclusão de um arquivo ao mesmo tempo, você não pode usar caracteres curinga ao
especificar o nome do arquivo a ser excluído. A sintaxe do Arquivo objeto de Excluir() método é mostrado
abaixo.

ObjectReference. Excluir (Force)

ObjectReference é a variável que representa um exemplo do Objeto FileSystem. Força é um valor booleano

opção que, quando definido como igual a Verdade permite que uma única leitura pasta a ser excluído.

NOTA

Um erro ocorrerá se o Excluir() método é incapaz de localizar um nome de arquivo correspondente (por exemplo, se o
arquivo especificado não existe).

Para usar o Arquivo objeto de Excluir() método, primeiro você deve criar uma instância do

FileSystemObject, como mostrado abaixo.

Definir FsoObject = CreateObject ( “Scripting.FileSystemObject”)

Em seguida, você precisa usar o FileSystemObject objeto de GetFile () método para recuperar uma referência para o
arquivo que você pretende excluir.

Definir TargetFile = FsoObject.GetFile ( “d: \ Temp \ TestFile.txt”)

Finalmente, você pode excluir o arquivo.

TargetFile.Delete ()
458 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

NOTA

o FileSystemObject objeto de GetFile () método tem a seguinte sintaxe:

ObjectReference. GetFile ( Nome do arquivo)

ObjectReference é a variável que representa um exemplo do FileSystemObject. Nome do arquivo é o nome

completo e o caminho do arquivo a ser administrada. Se o arquivo passado para o GetFile () método não for

encontrado, ocorrerá um erro.

Outros VBScript elementos da linguagem necessários


para construir o script de gerenciamento Arquivo

Ao pensar sobre como desenvolver o script de gestão de arquivo, Molly decidiu usar o FileSystemObject
objeto de DeleteFile () método em vez da Arquivo objeto de Excluir() método. usando o DeleteFile () método,
ela vai ser capaz de excluir relatórios resumidos em uma base de mês a mês dentro de um único DeleteFile
() Operação. usando o Excluir() método, Molly teria que criar um loop e interagir através de uma lista
de arquivos armazenados no D: \ Order_Inventory \ SummaryRpts pasta procurando o arquivo a ser
excluído.

Molly também quer gravar uma mensagem no log de eventos do Windows quando o script é executado para
que ela terá um registro de sua execução. Ela vai precisar usar o
WshShell objeto de RegistrarEvento () método. Além disso, ela vai precisar para aprender como usar
o VBScript built-in Instr () função ao executar a sub-rotina que determina qual mês valor de arquivos
devem ser excluídos.

LogEvent do objeto WshShell () Método


Por um tempo, Molly pensou em criar um arquivo de log personalizado para seus aplicativos para que os
scripts que continuamente anexar mensagens como eles foram executados. Ela última análise, deu-se sobre
essa idéia como sendo muito trabalho para pouco ganho e, em vez disso decidiu aproveitar a disponibilidade
de log de eventos do aplicativo do Windows. Para fazer isso, ela terá que usar o WshShell objeto de RegistrarEvento
() método, que tem a seguinte sintaxe.
MANTER A 30 DIAS Sumário LOG ARQUIVO Capítulo 20 459

ObjectReference. LogEvent ( intEventType, strMsg [, strComputer])

ObjectReference é a variável que representa um exemplo do Objeto FileSystem. IntEventType é


um valor numérico que especifica o tipo de evento. Mesa
20.2 fornece uma lista dos tipos de eventos disponíveis. strMsg representa a mensagem a ser gravada no
log de eventos do aplicativo e strComputer é um parâmetro opcional que especifica o nome ou endereço
IP do outro computador onde o evento deve ser enviado. Se omitido, o evento é registrado localmente.

Tabela Tipos de Eventos do Windows 20,2 Valor

Descrição

0 Especifica um evento de sucesso

1 Especifica um evento de erro

2 Especifica um evento de aviso

4 Especifica um evento informativo

8 Especifica um evento de auditoria bem sucedida

16 Especifica um evento de auditoria falhou

NOTA

Windows NT, 2000 e XP todos mantêm logs de eventos do aplicativo. No Windows 98 e Me, eventos de aplicativo são
armazenados em WSH.log, que reside na mesma pasta que os arquivos de sistema do Windows (tipicamente C: \
Windows).

O exemplo a seguir demonstra como usar o RegistrarEvento () método para escrever uma mensagem no log
de eventos do aplicativo.

Definir WshShl = WScript.CreateObject ( “WScript.Shell”) WshShl.LogEvent

1, “testscript.vbs - Agora executoras”

o RegistrarEvento () método retorna um valor booleano Verdade quando se escreve com sucesso uma
mensagem no log de eventos do aplicativo Windows e um valor de Falso
quando não consegue escrever a mensagem, como demonstrado no exemplo a seguir.

Definir WshShl = WScript.CreateObject ( “WScript.Shell”)


460 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

Intage = GetUserAge () Se

Intage <= 18 Então

WshShl.LogEvent 1, “Erro - O usuário não autorizado para executar script” Else

WshShl.LogEvent 0, “Script agora executar” End If

GetUserAge função ()

GetUserAge = InputBox ( “Quantos anos você tem?”) End

Function

Neste exemplo, o número digitado pelo usuário é verificado para determinar se ou não o script deve ser
executado. Se o usuário estiver mais de 18 anos, o script é permitido para executar, caso contrário ele não é.
Uma mensagem diferente é registrado no log de eventos do aplicativo com base na idade relatada do usuário.

A função integrada no VBScript Instr ()


Um dos passos que Molly precisará executar nos scripts de gerenciamento de arquivo é determinar qual
mês a pena de relatórios resumidos de apagar a partir do servidor Windows 2000 onde a ordem system
\ inventário reside. Para executar esta tarefa, ela terá de alavancar um número de diferentes funções do
VBScript, incluindo o Instr (), de idade (), e Encontro() funções. o Mediana () função foi previamente
introduzido no Capítulo 17 “Utilizando Arquivos de configuração para controlar a execução de script” eo Encontro()
função foi introduzido no Capítulo 19 “Execução Programação Script”. o Instr () função fornece a
capacidade para obter um valor numérico que representa a primeira ocorrência de uma sequência
dentro de um outro. A sua sintaxe é descrito a seguir.

InStr ([ StartPosition,] Cadeia1, Cadeia2 [, CompType])

Posição inicial é um parâmetro de opção que é usado para especificar a posição de caractere inicial dentro

string1 onde a busca é para começar. string1 representa a expressão a ser pesquisada. string2 representa

a cadeia a procurar. CompType é um valor numérico opcional que especifica o tipo de comparação. Um
valor de 0 especifica uma comparação de binário e um valor de 1 especifica uma comparação de texto. O
valor devolvido pela Instr () método varia com base em vários critérios, como delineado na Tabela 20.3.
MANTER A 30 DIAS Sumário LOG ARQUIVO Capítulo 20 461

Tabela Valor 20,3 Instr () Valor Retornado

Condição

0 string1 é zero comprimento

Nulo string1 é nulo

Nulo string2 é nulo

Começar string2 é zero comprimento

0 string2 não encontrada em string1

0 Começar é maior do que o comprimento de string2

Posição em que for encontrada uma correspondência string2 encontrado dentro string1

Escrevendo o roteiro de Gestão Arquivo


Molly é agora familiarizado com tudo o que ela precisa saber, a fim de começar a escrever o script de gestão
de arquivo. Tal como acontece com todos os seus outros scripts, ela planeja seguir um projeto padrão,
quebrando o roteiro em três seções principais e localização de objetos e valores de variáveis ​sempre que
possível.

A seção de inicialização
No Inicialização Seção, mostrado abaixo, Molly define duas variáveis ​de cadeia. o strVerifyExecutionSchedule
variável irá ser utilizado na Seção de Processamento Principal para armazenar um valor que
indica se o script é permitido para executar (por exemplo, ou não, hoje é o primeiro dia do
mês). o
strDeleteMonth variável será usado para armazenar um valor que representa valor de arquivos de relatório de

resumo do mês para ser excluído. Esta variável é usada por vários procedimentos no script.

Option Explicit

Dim strVerifyExecutionSchedule, strDeleteMonth

A Seção de Processamento Principal


No Seção de Processamento principal, mostrado na página seguinte, Molly primeiro chama a sub-rotina
chamada OkToRunToday () para determinar se é o primeiro dia
462 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

do mês. Se for, o valor devolvido é Sim. Em seguida uma If ... Then ... Else
declaração está configurado que controla a execução de uma série de procedimentos. E se
strVerifyExecutionSchedule indica que hoje é o primeiro dia do mês, em seguida, os seguintes
procedimentos são chamados na ordem mostrada abaixo:

◆ MonthToDelete (). Determina quais mês valor de resumo


arquivos de relatório deve ser suprimido

◆ WriteToEventLog (). Escreve uma cadeia de texto, passado para ele como uma variável, a

log de eventos do aplicativo Windows

◆ RemoveOldSummaryFiles (). Executa a exclusão real de sum- velho


arquivos de relatório mary

Se o script não está sendo executado no primeiro dia do mês, então o WriteToEventLog () sub-rotina é
passada uma mensagem de texto indicando que o script não pode executar ea WScript objeto de Sair()
método é executado para executar uma rescisão roteiro controlada.

strVerifyExecutionSchedule = OkToRunToday ()

Se strVerifyExecutionSchedule = “Sim” Então

MonthToDelete ()

WriteToEventLog ( “Relatório Resumido Archive Manager execução.”)

RemoveOldSummaryFiles () Else

WriteToEventLog ( “Relatório Resumido Archive execução Manager“& _

WScript.Quit) () End If - “cronograma de execução inválido

encerrado.”

'Terminar roteiro WScript.Quit execução

()

O OkToRunToday () subrotina
o OkToRunToday () sub-rotina, ilustrada a seguir, utiliza o embutido VBScript
Dia() e Encontro() funções (como demonstrado no capítulo anterior) para determinar se o script
está sendo executado no primeiro dia do mês.

OkToRunToday função ()
MANTER A 30 DIAS Sumário LOG ARQUIVO Capítulo 20 463

Se Day (Date ()) = 1 Then

OkToRunToday = “Sim” End If

End Function

O MonthToDelete () subrotina
o MonthToDelete () sub-rotina, mostrado abaixo, é responsável por determinar qual mês a pena de
arquivos de relatório de síntese devem ser excluídos. Inicia-se através da definição de duas variáveis
​de localizadas. o intGetSlashPosition variável é usada para armazenar um valor que indica a localização
do primeiro caractere barra invertida (/) na data atual. o strCurrentMonth variável será usado para
armazenar um valor numérico que indica o mês atual. O valor atribuído ao intGetSlashPosition é
determinada usando o

Instr () função de pesquisa para o caractere de barra invertida (/) na data como recuperado pela Encontro()
função. O valor de strCurrentMonth é então determinada usando a Mediana () função para analisar a
porção mês da data (o qual está no formato de mm / dd / aaaa). O valor do mês é analisado para fora,
tendo todos os caracteres a partir da primeira posição de caracteres até que a ocorrência do carácter
primeira barra invertida (/) (expresso como intGetSlashPosition - 1).

O valor de strDeleteMonth é então determinada por subtracção de 2 a partir de strCurrentMonth. Se, por
exemplo, a data atual é 1 de março, em seguida, o valor de
strDeleteMonth será de 1 (3 - 2 = 1). Dois Se então declarações são então configurado para
ajustar o valor de strDeleteMonth no caso em que o mês atual é fevereiro ou janeiro. Se o mês
atual é fevereiro, em seguida, 2 - 2 será igual a zero. Porque o mês que deve ser excluído
neste caso é de dezembro, o primeiro E se instrução verifica para ver se o valor atribuído ao strDeleteMonth
é 0 e muda o seu valor para 12 se for. Da mesma forma, se o mês atual é janeiro, o valor de strDeleteMonth
é ajustado a 11 (Novembro).

Sub MonthToDelete ()

Dim intGetSlashPosition, strCurrentMonth

intGetSlashPosition = Instr (Date () “/”)


464 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

strCurrentMonth = Mid (Date (), 1, intGetSlashPosition - 1)

strDeleteMonth = strCurrentMonth - 2

Se strDeleteMonth = 0 Then

strDeleteMonth = “12” End If

Se strDeleteMonth = -1 Então

strDeleteMonth = “11” End If

End Sub

Os RemoveOldSummaryFiles () subrotina
o RemoveOldSummaryFiles () sub-rotina, mostrado abaixo, é responsável pela exclusão de relatórios
resumidos que são dois meses de idade do D: \ Order_Inventory \ SummaryRpts relatório de síntese pasta
de arquivo. Ela começa pela criação de uma instância do FileSystemObject e definir uma variável
chamada strSummary RptPath, que é então definido para a localização da pasta onde os relatórios
resumidos são armazenados.

A última declaração no sub-rotina usa a FileSystemObject objeto de


DeleteFile () método para excluir arquivos de relatório de resumo que são dois meses de idade.
Isso é feito anexando juntamente três peças de informação. O primeiro pedaço de informação é o
caminho do SummaryRpts pasta. Em seguida, o valor numérico do mês atual é adicionado, seguido
por * _ SumRpt.txt. Por exemplo, se hoje fosse 01 de março de 2003, o valor passado para o DeleteFile
() método seria D: \ Order_Inventory \ SummaryRpts \ 01_SumRpt.txt.

RemoveOldSummaryFiles sub ()

Dim FsoObject, strSummaryRptPath

strSummaryRptPath = “d: \ Order_Inventory \ SummaryRpts \”

Definir FsoObject = WScript.CreateObject ( “Scripting.FileSystemObject”)


MANTER A 30 DIAS Sumário LOG ARQUIVO Capítulo 20 465

FsoObject.DeleteFile strSummaryRptPath & strDeleteMonth & “* _SumRpt.txt”

End Sub

O WriteToEventLog () subrotina
o WriteToEventLog () sub-rotina, ilustrada a seguir, define-se um exemplo do
WshShell objeto e, em seguida, usa a sua RegistrarEvento () método para escrever uma mensagem informativa para o log

de eventos do aplicativo do Windows.

Sub WriteToEventLog (strMessage)

WshShl Dim

Definir WshShl = WScript.CreateObject ( “WScript.Shell”)

WshShl.LogEvent 4, strMessage

End Sub

The Script totalmente montado


Uma vez que o script de gerenciamento de arquivo mostrado abaixo é totalmente montado, Molly pode colocar
uma cópia do mesmo na D: \ VBScripts pasta no servidor Windows 2000 onde o sistema de ordem / inventário
reside e permitir que o MstrSched.vbs roteiro desenvolvido no capítulo anterior para automatizar a sua execução
em uma base mensal.

'************************************************* ************************ 'Script Nome: 20.1.vbs script' Autor: Jerry

Ford 'Criado: 03/22/03

'Descrição: Este script exclui todos os arquivos de relatório resumo com exceção de' arquivo de resumo de

hoje e as do mês anterior. '************************************************* ************************

'Seção de inicialização

Option Explicit
466 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

Dim strVerifyExecutionSchedule, strDeleteMonth

'Secção de Processamento Principal

strVerifyExecutionSchedule = OkToRunToday ()

Se strVerifyExecutionSchedule = “Sim” Então

MonthToDelete ()

WriteToEventLog ( “Relatório Resumido Archive Manager execução.”)

RemoveOldSummaryFiles () Else

WriteToEventLog ( “Relatório Resumido Archive execução Manager“& _

WScript.Quit) () End If - “cronograma de execução inválido

encerrado.”

'Terminar roteiro WScript.Quit execução

()

'Secção Procedimento

OkToRunToday função ()

Se Day (Date ()) = 1 Then

OkToRunToday = “Sim” End If

End Function

Sub MonthToDelete ()

Dim intGetSlashPosition, strCurrentMonth

intGetSlashPosition = Instr (Date () “/”)


MANTER A 30 DIAS Sumário LOG ARQUIVO Capítulo 20 467

strCurrentMonth = Mid (Date (), 1, intGetSlashPosition - 1)

strDeleteMonth = strCurrentMonth - 2

Se strDeleteMonth = 0 Then

strDeleteMonth = “12” End If

Se strDeleteMonth = -1 Então

strDeleteMonth = “11” End If

End Sub

RemoveOldSummaryFiles sub ()

Dim FsoObject, strSummaryRptPath

strSummaryRptPath = “d: \ Order_Inventory \ SummaryRpts \”

Definir FsoObject = WScript.CreateObject ( “Scripting.FileSystemObject”)

FsoObject.DeleteFile strSummaryRptPath & strDeleteMonth & “* _SumRpt.txt”

End Sub

Sub WriteToEventLog (strMessage)

WshShl Dim

Definir WshShl = WScript.CreateObject ( “WScript.Shell”)

WshShl.LogEvent 4, strMessage

End Sub
468 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO

resumo
Neste capítulo, você aprendeu a usar o VBScript Instr () função para procurar cadeias de texto para os padrões
de correspondência. Ao combinar esta função com o Mediana () e
Encontro() funções, você pode determinar qual grupo de arquivos para excluir ao criar o script de gerenciamento

de arquivo. Você também aprendeu os meandros da gestão de ficheiros, incluindo como excluir um ou mais
arquivos. Finalmente, você aprendeu sobre o
WshShell objeto de RegistrarEvento () método e como usá-lo para gravar mensagens no log de eventos do

aplicativo do Windows.
PARTE IV
Project Professional 3
Esta página foi intencionalmente esquerda em branco
projeto 3
Criando uma Estação de
Gerenciamento Centralizado
Relatório
Visão geral do projeto 3
Este projeto se expande no projeto anterior, incorporando o processamento dos relatórios dos vários

servidores ordem / inventário em Ferramentas Intuit mecânicos. O foco principal do projeto é o

estabelecimento de uma estação de gerenciamento relatório centralizado onde todos os relatórios de ordem

/ inventário será armazenado. Como parte do processo de gestão dos dados armazenados nesses

relatórios, um novo relatório de síntese consolidada será desenvolvido. Este relatório consolidado será

composto de informações obtidas a partir relatórios armazenados em cada servidor Windows 2000 onde o

sistema de ordem / inventário tenha sido implantado.

Este projecto vai exigir o uso de novos métodos FileSystemObject, a fim de gerir os relatórios de

movimentação e de processamento dos servidores de ordem / inventário para a estação de gerenciamento

relatório centralizado. Você será apresentado a inúmeras funções de cadeia VBScript que são necessários

para analisar as informações armazenadas nos relatórios de fim / inventário. Você também vai aprender a

desenvolver um script de agendamento mestre que será responsável por controlar a execução de todos os

scripts que compõem este projeto.

Além de aprender como trabalhar com os recursos VBScript anteriores, você vai aprender como
automatizar a execução de uma série de tarefas, incluindo:

◆ O armazenamento de dados e recuperá-lo do registro do Windows

◆ administrar remotamente arquivos armazenados em unidades de rede

◆ Criação de texto simples e relatórios Microsoft Word formatados

◆ O envio de mensagens de rede pop-up que fornecem notificação quando

os relatórios consolidados estão disponíveis


Capítulo 21
Estudo de Caso: Criando
uma estação de
gerenciamento
centralizado Relatório
T Molly
seu Masterson
capítulo começadesenvolve umade
um novo estudo nova
casoestação de gerenciamento
do projeto. relatório
Neste projeto, você centralizado
vai observar como para o sistema de

ordem / inventário em Ferramentas Intuit mecânicos. Através da conclusão deste projeto, você vai ganhar mais
experiência em automatizar muitas das tarefas que foram abordados no projeto anterior. Além disso, você vai
aprender como automatizar uma série de novas tarefas, incluindo:

◆ O armazenamento e recuperação de dados de configuração no registo do Windows

◆ A administração remota de arquivos armazenados em unidades de rede

◆ A criação de texto e arquivos do Microsoft Word

◆ O envio de mensagens pop-up de notificação através de uma rede

Visão Geral do Projeto


Tem sido um mês desde Molly terminou o desenvolvimento e implantação de seu relatório pedidos / stocks e log scripts do

analisador. Desde aquela época, um excitante novo desenvolvimento ocorreu em Ferramentas Intuit mecânicos. Na

semana passada, a empresa foi premiado com um contrato de cinco anos com o governo estadual local que vai obrigá-la

a quase o dobro suas primeiras ordens de produção output.The para este novo contrato começarão a chegar em uma

semana. Porque este novo contrato foi um pouco de surpresa, todos em Tools Intuit mecânicos tem que lutar, a fim de

preparar as coisas. Como uma solução de curto prazo para lidar com a crescente TI processamento de carga de trabalho,

a empresa adquiriu um novo servidor Windows 2000 e os planos para instalar o sistema de pedidos / inventário sobre ela.

Este servidor será então utilizada para lidar com todas as vendas de entrada e retornos provenientes do novo contrato

com o governo. Enquanto isso, o atual servidor Windows 2000 continuará a processar todas as vendas e os retornos de

todos os clientes atuais. Em uma data posterior (uma vez mais programadores foram contratados), a empresa irá trabalhar

para modificar o sistema de pedidos / inventário e consolidar todos os dados gerenciados de ambos os servidores

Windows 2000. Isto significa que um número de departamentos dentro Ferramentas Intuit mecânicos terão que trabalhar

mais a fim de consolidar as vendas, devoluções e informações de produção de duas fontes diferentes. a empresa irá

trabalhar para modificar o sistema de pedidos / inventário e consolidar todos os dados gerenciados de ambos os

servidores do Windows 2000. Isto significa que um número de departamentos dentro Ferramentas Intuit mecânicos terão

que trabalhar mais a fim de consolidar as vendas, devoluções e informações de produção de duas fontes diferentes. a

empresa irá trabalhar para modificar o sistema de pedidos / inventário e consolidar todos os dados gerenciados de ambos

os servidores Windows 2000. Isto significa que um número de departamentos dentro Ferramentas Intuit mecânicos terão que trabalhar mais a fim
CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO Capítulo 21 475

Como resultado de seu sucesso na conclusão de seu último projeto, o departamento de operações de
computador solicitou que Molly desenvolver um processo automatizado que irá recuperar cópias dos relatórios
resumidos de ambos os servidores Windows 2000 e armazená-los em uma estação de trabalho profissional
dedicado Windows 2000 localizado dentro do centro de controle Operacional. Além disso, o departamento de
operações gostaria de Molly para automatizar o processamento dos relatórios resumidos de ambos os servidores
e para criar um único relatório consolidado, para o qual gostaria de manter um arquivo de rolamento de três
meses.

Coleta de Requisitos de Projeto


O primeiro passo que Molly tomou sobre início deste novo projeto foi sentar-se com vários membros da equipe
de operações para determinar exatamente o que estavam procurando no que diz respeito à criação de um
relatório de síntese consolidada. Nesta reunião, ela foi convidada para desenvolver um relatório diário com base
no seguinte relatório de exemplo que as operações haviam criado manualmente.

*******************************************************************************

Relatório de síntese mestre consolidado 2003/05/01

*******************************************************************************

erros:

Encontro Tempo Código Svr Descrição

12:15:44 3/01/03 Sr2 001 Não é possível acessar leitor de cartão no dispositivo wkstn442 14:00:14 3/01/03 Sr2 001

Nenhum inventário para a parte # 58692 - incapaz de preencher ordem

39312

16:16:46 3/01/03 Sr2 003 Impossível imprimir rpt resumo sobre mestre impressor (sem

papel)

17:42:23 3/01/03 Sr1 002 falha de executar trabalho # 434, sched 55 - código 0004534 18:19:19 3/01/03 Sr1 001 Nenhum

inventário para a parte # 58655 - incapaz de preencher ordem

39312

18:22:21 3/01/03 Sr1 001 Não é possível acessar leitor de cartão no dispositivo wkstn113

-------------------------------------------------------------------------------

resumo de vendas:
476 projeto 3 CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO

Governo:

Part # Quantidade Descrição

58694 19 leitor temperatura Cordless

45643 3 bomba magnética 200hp

17443 15 20 caixa de lb de clipes de bomba

10344 35 48 onças garrafa solvente

19365 2 furadeira elétrica 3 velocidade

Outros Clientes:

Part # Quantidade Descrição

58694 23 leitor temperatura Cordless

45643 2 bomba magnética 200hp

17443 10 20 caixa de lb de clipes de bomba

10344 33 48 onças garrafa solvente

19365 5 furadeira elétrica 3 velocidade

-------------------------------------------------------------------------------

resumo do retorno:

Governo:

Part # Quantidade Descrição

58694 2 leitor temperatura Cordless

17443 7 20 caixa de lb de clipes de bomba

10344 4 48 onças garrafa solvente

45643 1 bomba magnética 200hp

19365 1 furadeira elétrica 3 velocidade


CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO Capítulo 21 477

Outros Clientes:

Part # Quantidade Descrição

58694 1 leitor temperatura Cordless

17443 3 20 caixa de lb de clipes de bomba

10344 4 48 onças garrafa solvente

45643 3 bomba magnética 200hp

19365 2 furadeira elétrica 3 velocidade

-------------------------------------------------------------------------------

Resumo produção diária

Part # Qtde Descrição Em estoque

58694 20 leitor temperatura Cordless 45

45643 4 bomba magnética 200hp 20

19365 12 furadeira elétrica 3 velocidade 20

17443 42 20 caixa de lb de clipes de bomba 200

10344 240 48 onças garrafa solvente 375

O relatório representa informações extraídas dos relatórios de síntese que serão gerados em ambos os
servidores Windows 2000. O atual servidor Windows 2000 é nomeado Serv0001. O novo servidor, que
ainda está sendo configurado, será nomeado relatório Serv0002.The si não é substancialmente diferente
dos relatórios resumidos já gerados localmente nos servidores.

Para começar, este relatório de síntese consolidada novo mestre ainda está organizado em quatro seções. o erros:

seção agora informa sobre os erros de ambos os servidores Windows 2000. Um novo campo terá de ser

inserido que especifica o servidor do qual o erro foi relatado, de forma abreviada (SR1 para Serv0001 e Sr2

para Serv0002). Os dados apresentados no resumo de vendas: e resumo do retorno: seções é dividido em dois

conjuntos de dados. O primeiro conjunto de dados lista de vendas do governo ou retornos obtidos a partir dos

relatórios de síntese sobre Serv0001, eo segundo conjunto de dados representa os dados de vendas ou

devoluções coletados dos relatórios resumidos no servidor Serv0002 para todos os outros clientes.

Finalmente, as informações apresentadas no Resumo produção diária seção apresenta totais recolhidos de

ambos os servidores.
478 projeto 3 CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO

Análise de requisitos
Após o encontro com a equipe de operações, Molly voltou para sua mesa e escreveu-se uma lista de
requisitos do projeto, que ela então e-mail para tanto seu gerente e o gerente de operações para aprovação.
Esta lista é mostrado abaixo.

◆ Automatizar a coleta de relatórios resumidos de ambos Serv0001 e


Serv0002

◆ Ler e processar os relatórios resumidos de ambos os servidores e gerar uma


mestre relatório de síntese consolidada

◆ Manter um arquivo de três meses de relatórios consolidados master no


estação de trabalho Windows 2000 localizado no centro de controle de operações

◆ As mensagens de log de eventos no log de eventos do Windows 2000 aplicações para

facilitar a auditoria e monitoramento da atividade de script

◆ Notificar equipe de operações por meio de uma caixa de diálogo pop-up quando o mas-

ter relatório de síntese consolidada está disponível

◆ Criar tanto um texto e uma versão do Microsoft Word do mestre consolidar


relatório de síntese datado

◆ Completar o desenvolvimento e teste do projeto dentro de 30 dias Ao exigir que tanto o seu
gerente e o gerente de operações confirmar a sua aceitação destes requisitos, Molly espera para garantir
que o novo sistema de automação ela vai estar desenvolvendo vão ao encontro das necessidades do
departamento de operações . Além disso, ao formalizar os requisitos do projeto na frente e obter a
aprovação de todos, ela pode impedir fluência característica (isto é, a adição ad hoc de novos requisitos
durante o desenvolvimento do projeto). Uma vez aprovado, quaisquer mudanças nos requisitos do
projeto terão de ser abordadas em uma data posterior. Isso ajudará a garantir que Molly não perca seu
prazo final do projeto por ter que estabelecer requisitos adicionais do projeto que ela não tinha planejado.

Executando uma alta nível de design


Como parte de seu projeto preliminar e para ajudar a gestão e a equipe de operações melhor
compreender o alcance global do projeto, Molly desenhou o esboço mostrado na Figura 21.1.
CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO Capítulo 21 479

- -

FIGURA 21,1 Uma visão geral dos diferentes componentes envolvidos no desenvolvimento de um mestre consolidar datado sistema de

comunicação

Como mostra o esboço, Molly está pensando em criar uma estação de trabalho de gerenciamento centralizado,

copiando os arquivos de resumo de cada servidor Windows 2000 e armazená-los na estação de trabalho do

Windows 2000 Professional. Os relatórios resumidos mestre consolidou será armazenado na estação de trabalho,

também. Para seu próprio esclarecimento, ela descreveu os arquivos INI em cada um dos servidores remotos do

Windows onde ela armazena relatórios VBScript e registrar as definições de configuração do analisador. Uma vez

que tudo está funcionando bem no controle remoto servidores Windows 2000, e por uma questão de conveniência,

ela pretende manter os arquivos INI no lugar nos servidores remotos. No entanto, ela decidiu usar o registro do

Windows 2000 na estação de trabalho do Windows 2000 Professional como o repositório central para todas as

definições de configuração para os scripts que ela vai desenvolver como parte deste novo projeto. Uma vez que ela

recebeu a aprovação formal dos requisitos do projeto que ela tinha distribuídos e respondidas perguntas de todos,

Molly começou a trabalhar em um projeto de alto nível. Mais uma vez, ela decidiu usar VBScript eo WSH e enfrentar

este projecto através do desenvolvimento de uma coleção de pequenos scripts, em vez de tentar escrever um

grande programa com tudo incluído.


480 projeto 3 CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO

Molly em última análise produziu a seguinte lista de tarefas tal como mostrado na Tabela 21.1, cada uma das quais

ela pretende realizar com um VBScript indivíduo.

Tabela 21.1 Order Consolidado / inventário tarefas de relatório Resumo Tipo de Tarefa

Descrição

Configuração do registro Criar um VBScript que irá criar uma chave de registro para o projeto e, em seguida,

preencher essa chave com os valores, cada um dos quais armazena uma configuração

especial para os scripts envolvidos neste projeto

Recuperação Remota Relatório Criar um script que se conecta a cada um dos servidores Windows 2000, cópias dos

relatórios resumidos diários para a estação de trabalho Windows 2000, e notifica

operações se os relatórios de resumo não estão disponíveis

relatório de Consolidação Criar um VBScript que lê tanto nos relatórios de síntese gerados a cada dia,
consolida suas informações em um único relatório com base nos critérios
especificados por operações, e notifica as operações quando o relatório consolidado
mestre está pronto

Gestão de Arquivo Criar um VBScript que mantém um arquivo de três meses de relatórios resumidos
mestre consolidou e executar esse script no primeiro dia de cada mês, a fim de excluir
arquivos de relatório antigos

Além de escrever esses scripts, Molly vai precisar para criar a sua execução programada. A conclusão
desta tarefa também irá incluir a criação de uma só vez de uma conta de serviço especial na estação de
trabalho do Windows 2000 Professional, a fim de facilitar a execução de tarefas agendadas.

Criando o script de instalação Registry


Em vez de incorporar definições de script dentro de cada VBScript ou armazená-los em um ou mais arquivos INI,
Molly decidiu aprender a armazená-los dentro de registro do Windows. Desta forma, seus roteiros irá correr mais
rápido, porque não terá que executar qualquer arquivo I / O, a fim de recuperar suas configurações, e ela não terá
que editar manualmente seus roteiros e arriscar um erro de digitação acidental ao modificar as configurações de
script. De fato, usando o utilitário Regedt32 fornecido com o Windows 2000 ou Windows XP, ela vai ser capaz de
modificar remotamente as definições de registo para os scripts a partir do conforto de sua própria área de trabalho,
como demonstrado na Figura 21.2.
CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO Capítulo 21 481

chaves de raiz do Registro locais chaves

de raiz registro remoto

FIGURA 21.2 Usando o utilitário Regedt32 para modificar remotamente chaves de registro e valores

Molly ainda está no processo de determinar exatamente quais tipos de dados de configuração ela vai
exteriorizar de seus roteiros e armazenar dentro de registro do Windows. Ela sabe que ela pretende
criar uma chave sob a HKEY_LOCAL_MACHINE
chave raiz chamada Intuito. Sob essa chave, ela irá criar uma subchave chamada
VBScripts, e dentro desta subchave ela vai criar mais uma chave chamada MstSumRpts. Dentro do MstSumRpts subchave,

ela vai armazenar todas as definições de configuração para cada um dos VBScripts que serão executados na
estação de trabalho do Windows 2000 Professional.

NOTA

Para obter informações detalhadas sobre a estrutura do Registro e como ele funciona, consulte o Capítulo 22,
“Desenvolver a configuração Script.”

A fim de desenvolver o script de instalação que irá criar as chaves de registro e armazenar definições de
configuração do seu roteiro, Molly vai precisar para aprender a trabalhar com o seguinte WshShell métodos de
objeto:
482 projeto 3 CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO

◆ RegWrite (). Oferece a capacidade de criar e alterar as chaves do Registro e


valores

◆ RegRead (). Oferece a capacidade de recuperar chaves de registro e valores

◆ RegDelete (). Oferece a capacidade de excluir chaves do Registro e valores

Criando o Resumo Remote Reportagem Retrieval Script


Para ler e processar os relatórios de resumo de cada servidor Windows 2000, Molly planeja sobre como configurar as

pastas onde os relatórios resumidos são armazenados como pastas compartilhadas. Em seguida, ela planeja escrever um

script que irá se conectar remotamente para pastas compartilhadas em cada servidor e copiar os relatórios de resumo

diários para a estação de trabalho do Windows 2000 Professional para posterior processamento.

Para se conectar remotamente para as pastas compartilhadas onde os relatórios resumidos são armazenados
em cada servidor Windows 2000, Molly vai precisar para aprender a trabalhar com o WshNetwork objeto. Este
objeto fornece acesso a propriedades que contêm informações sobre a rede e métodos que permitem que você
se conectar a unidades de rede e impressoras. Em particular, Molly vai ter que aprender a trabalhar com o
seguinte WshNetwork métodos de objeto:

◆ MapNetworkDrive. Estabelece uma conexão com uma unidade de rede compartilhada

ou pasta

◆ RemoveNetworkDrive. Desconecta uma conexão de um NET- compartilhada


unidade de trabalho ou pasta

Criando o Script Relatório de Consolidação


O processamento dos relatórios resumidos coletados dos dois servidores Windows 2000 será realizado
em muito da mesma forma que o relatório e log roteiro analisador processou o relatório de quatro e
arquivos de log descrito no Capítulo 18, “Desenvolver Script Analisadores do registro.” No entanto, há
algumas diferenças. Por um lado, Molly vai ter que adicionar uma nova coluna à erros: seção ao escrever
o relatório de síntese consolidada, a fim de identificar em qual servidor cada erro ocorreu. Outra nova
exigência do relatório de síntese consolidada é a acumulação de totais de inventário de produção no
final do relatório. Esta acumulação de totais exigirá o VBScript para coincidir com os itens de linha com
base na correspondência números das peças, a fim de calcular o inventário total na mão para cada item.
CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO Capítulo 21 483

A fim de desenvolver o VBScript que produz o arquivo de relatório de síntese consolidada, Molly vai
precisar usar cada um dos seguintes FileSystemObject métodos de objeto:

◆ O arquivo existe(). Para validar se um arquivo de log ou relatório existe antes


tentando abri-la

◆ OpenTextFile (). Para ser capaz de trabalhar com o conteúdo do log ou


arquivo de relatório

◆ Leia a linha(). Para ser capaz de ler uma linha de cada vez a partir do arquivo INI

◆ SkipLines (). Para ser capaz de pular linhas de cabeçalho ao ler arquivos

◆ Fechar(). Para fechar o arquivo INI quando feito processá-lo

◆ WriteLine (). Para ser capaz de escrever uma linha de saída para o arquivo de resumo

◆ WriteBlankLines (). Para ser capaz de escrever linhas em branco e formatar o


apresentação de dados no arquivo de resumo

Criando o script de gerenciamento Arquivo


A última VBScript que Molly irá criar para este projeto é aquele que administra três arquivos de ficheiros separados,

conforme descrito abaixo.

◆ D: \ Order_Inventory \ Sr1_SummaryRpts. Armazena um mínimo de 90


worth dias de relatórios resumidos recuperados de Serv0001

◆ D: \ Order_Inventory \ Sr2_SummaryRpts. Armazena um mínimo de 90


worth dias de relatórios resumidos recuperados de Serv0002

◆ D: \ Order_Inventory \ ConsolidatedRpts. Armazena um mínimo de 90


worth dias de relatórios resumidos consolidadas criadas a partir dos relatórios resumidos individuais

recuperados de Serv0001 e Serv0002 Molly vai usar o serviço Agendador de Tarefas do Windows para

automatizar a execução desse script em uma base mensal. Porque o agendamento deste script é uma tarefa

única que só precisa ser executada na estação de trabalho do Windows 2000 Professional, Molly vai

configurar manualmente a sua execução programada usando o Assistente de tarefas agendadas.

Para automatizar a execução do script de gerenciamento de arquivo, Molly vai ter que trabalhar
com o seguinte FileSystemObject métodos de objeto:

◆ O arquivo existe(). Para validar se um arquivo de log ou relatório existe antes


tentando abri-la
484 projeto 3 CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO

◆ MoveFile (). Para mover um ou mais arquivos para uma pasta de arquivo para um mini-

retenção mãe de um mês

◆ DeleteFile (). Para excluir um ou mais arquivos armazenados na pasta de arquivo


após o seu período de conservação de 30 dias passou

Molly também planeja fornecer este script com a capacidade de notificar a equipe de operações quando
tiver concluído sua execução e o relatório de síntese consolidada está pronto para impressão. técnicas de
notificação implementadas por este script irá incluir a postagem de mensagens no log de eventos do
aplicativo do Windows 2000 Professional ea criação de mensagens pop-up na estação de trabalho do
Windows 2000 Professional. Para realizar estas duas tarefas, Molly vai ter que usar a WshShell objeto de

RegistrarEvento () método e do Windows net Send comando.

resumo
Neste capítulo, você foi apresentado a um novo estudo de caso do projeto. Você foram fornecidos com uma
visão geral das informações que Molly coletadas a partir do departamento de operações, bem como a lista de
requisitos do projeto. Um projeto preliminar de alto nível para o projeto foi desenvolvido, e as principais
construções de linguagem VBScript que serão necessários para desenvolver cada um dos VBScripts que
compõem este projecto foram brevemente delineado e explicado. Nos quatro capítulos que se seguem, você
vai ter a chance de trabalhar no desenvolvimento de todos os VBScripts.