Beruflich Dokumente
Kultur Dokumente
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 ()
strValidPassword
strValidPassword = “NÃO”
strPasswd = InputBox ( “Digite uma senha para o“& strDskMgtAcct & _ ‘conta e clique em OK.’,
cTitleBarMsg)
Se strPasswd = “” Then
GetValidPasswd = strPasswd
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.
'One fornece a Equipe de Suporte de mesa com uma backdoor no computador. 'O outro fornece acesso
'************************************************* ************************
'Seção de inicialização
Option Explicit
strDskMgtAcct
strSchedAcct
strDskMgtAcct = “ADMA01”
strSchedAcct = “ASAT01”
CallRunVerification ()
Se intRunStatus = 6 Então
Fim se
CRIANDO contas de administrador Capítulo 15 357
()
'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
“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?”
End Function
intCmdResult
intCmdResult = 0
strPasswd = GetValidPasswd ()
em seguida,
strNewAcctName, 0) Se intCmdResult
<> 0, em seguida,
End Sub
'Este procedimento cria uma conta de backdoor para o gerenciamento de desktop equipa Função
GetValidPasswd ()
strValidPassword
strValidPassword = “NÃO”
strPasswd = InputBox ( “Digite uma senha para o“& strDskMgtAcct & _ ‘conta e clique em OK.’,
cTitleBarMsg)
Se strPasswd = “” Then
GetValidPasswd = strPasswd
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
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
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:
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
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
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.
◆ 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.
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
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
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.3 O relatório retornos diários fornece ambos os detalhes de item de linha e uma análise sumária
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.
◆ Criar um único arquivo INI que irá armazenar as informações de configuração usado para
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.
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
Analisadores de log Desenvolver um log analisador VBScript para ler e processar o conteúdo do arquivo Error.log.
DailySales.txt.
Programação Script Agendar o script de execução que processa os relatórios e arquivos de log. Agendar a execução
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.
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:
◆ Leia a linha(). Ler uma linha de cada vez a partir do arquivo INI
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
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:
◆ Leia a linha(). Ler uma linha de cada vez a partir do arquivo de log
◆ WriteLine (). Escrever uma linha de saída para o arquivo 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
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.
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
◆ MoveFile (). Mover um ou mais arquivos para uma pasta de arquivo para um mini-
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.
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
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.
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
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
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
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
[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.
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.
[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
[ErrorRpt]
EventLog = True
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]
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.
[] DailyReturns
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,
[Produção diária]
ReportOn = HardAndSupl
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.
[ErrorRpt]
EventLog = True
386 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO
False
[Vendas diárias]
False
[] DailyReturns
False
[Produção diária]
ReportOn = HardAndSupl
False
◆ O arquivo existe()
◆ OpenTextFile ()
Usando arquivos de configuração para controlar SCRIPT Capítulo 17 387
◆ Leia a linha()
◆ Fechar()
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.
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.
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.
Descrição Valor
Para ler Abre ou cria um arquivo de modo que possa ser lido 1
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.
Descrição
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.
cForAppending = 8
LogFiles \ DailyRpt.log”
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.
anexar o arquivo. Várias etapas devem ser tomadas ao ler um arquivo, conforme descrito abaixo.
◆ Leia o arquivo
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
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
cForWriting = 2 const
cForAppending = 8
............... ..
laço Else
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
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.
cForWriting = 2 const
cForAppending = 8
OpenFile.AtEndOfStream
OpenFile.Close Else
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( )
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
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.
cForWriting = 2 const
cForAppending = 8
1, 1) = “[” Então
Sair não
End If
OpenFile.Close
Outro
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
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
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.
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,
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:
NOTA
WriteLine () anexa automaticamente um caractere de nova linha ao final de cada sequência de texto que grava em um arquivo. Outra
método, que escreve uma cadeia de texto a um arquivo sem acrescentar um caractere de nova linha, permitindo-lhe criar uma
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.
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.
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.
◆ escrevendo o erros: seção dos ErrorAnalyzer.vbs arquivo de relatório resumo precisará ler
[ErrorRpt]
EventLog = True
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.
*******************************************************************************
*******************************************************************************
12:15:44 3/15/03 001 Não é possível acessar leitor de cartão em wkstn442 dispositivo
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)
-------------------------------------------------------------------------------
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.
'Descrição: Este script recupera as definições de configuração de um arquivo INI,' processa um arquivo de relatório
'Seção de inicialização
Option Explicit
cForWriting = 2 const
cForAppending = 8
dados do relatório de astrReportArray. finalmente, o WScript objeto de Sair() método é usado para terminar a
execução do script.
Padrões de configuração()
ProcessIniFile ()
RefineOutputFileName ()
WriteToEventLog () End
If
ProcessReportFile ()
RecordSummaryData ()
()
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
'Secção Procedimento
SetUpDefaults sub ()
strEventLog = “True”
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 ()
strInputLine = OpenFile.ReadLine
Sair não
End If
intGetEqualsPosition - 1)
Caso “SourDir”
“ReportOn”
“EventLog”
“destfile”
“Debug”
Fim se
laço
OpenFile.Close ()
406 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO
Fim se
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
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
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 ()
intArrayCounter = 0
Do Until FileRef.AtEndOfStream
408 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO
FileRef.SkipLine ()
Saia Do
End If
Outro
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 ()
intArrayCounter = 0
OutPutFile.WriteLine
“************************************************* ******************************”
OutPutFile.WriteBlankLines (1)
(1) OutPutFile.WriteLine
“************************************************* ******************************”
OutPutFile.WriteBlankLines (1)
OutPutFile.WriteLine “erros:”
OutPutFile.WriteBlankLines (1)
OutPutFile.Close ()
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.
executado no modo de depuração, o MsgBox () função é usada para exibir uma mensagem pop-up mostrando que
Sub WriteToEventLog ()
WshShl Dim
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.”
[Vendas diárias]
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.
*******************************************************************************
*******************************************************************************
Vendas matérias:
-------------------------------------------------------------------------------
O script analisador relatório diário de Vendas, mostrado abaixo, está estruturado de forma muito semelhante ao script
'Descrição: Este script recupera as definições de configuração de um arquivo INI,' processa um arquivo de
'Seção de inicialização
Option Explicit
cForWriting = 2 const
cForAppending = 8
Padrões de configuração()
DESENVOLVIMENTO ANALISADORES SCRIPT LOG Capítulo 18 413
ProcessIniFile ()
RefineOutputFileName ()
WriteToEventLog () End
If
ProcessReportFile ()
RecordSummaryData ()
()
'Secção Procedimento
SetUpDefaults sub ()
strEventLog = “false”
End Sub
Sub ProcessIniFile ()
strInputLine = OpenFile.ReadLine
414 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO
laço
strInputLine = OpenFile.ReadLine
Sair não
End If
intGetEqualsPosition - 1)
Caso “SourDir”
“ReportOn”
“EventLog”
“destfile”
“Debug”
Fim se
laço
OpenFile.Close ()
Fim se
DESENVOLVIMENTO ANALISADORES SCRIPT LOG Capítulo 18 415
End Sub
Sub RefineOutputFileName ()
DataString Dim
End Sub
Sub ProcessReportFile ()
Dim intArrayCounter
intArrayCounter = 0
FileRef.AtEndOfStream
FileRef.SkipLine ()
FileRef.SkipLine ()
416 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO
FileRef.SkipLine ()
Do Until FileRef.AtEndOfStream
strRptLine = FileRef.ReadLine ()
intGetFirstBlankPosition + 1)
(intArrayCounter) = strRptLine
Do Until FileRef.AtEndOfStream
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 ()
intArrayCounter = 0
OutPutFile.WriteBlankLines (1)
“----------------------------------”
OutPutFile.WriteBlankLines (1)
OutPutFile.WriteBlankLines (1)
OutPutFile.Close ()
End Sub
Sub WriteToEventLog ()
418 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO
WshShl Dim
WshShl.LogEvent 4, “The Daily Vendas Relatório Analisador de Script está agora em execução.”
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.
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
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.
*******************************************************************************
*******************************************************************************
Retorna-primas:
-------------------------------------------------------------------------------
O script analisador relatório retornos diários, mostrado na página seguinte, é estruturado de forma muito semelhante
'Descrição: Este script recupera as definições de configuração de um arquivo INI,' processa um arquivo de
'Seção de inicialização
Option Explicit
cForWriting = 2 const
cForAppending = 8
Padrões de configuração()
ProcessIniFile ()
RefineOutputFileName ()
WriteToEventLog () End
If
DESENVOLVIMENTO ANALISADORES SCRIPT LOG Capítulo 18 421
ProcessReportFile ()
RecordSummaryData ()
()
'Secção Procedimento
SetUpDefaults sub ()
strEventLog = “false”
End Sub
Sub ProcessIniFile ()
strInputLine = OpenFile.ReadLine
Sair não
End If
422 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO
intGetEqualsPosition - 1)
Caso “SourDir”
“ReportOn”
“EventLog”
“destfile”
“Debug”
Fim se
laço
OpenFile.Close ()
Fim se
End Sub
Sub RefineOutputFileName ()
DataString Dim
End Sub
Sub ProcessReportFile ()
Dim intArrayCounter
intArrayCounter = 0
FileRef.AtEndOfStream
FileRef.SkipLine ()
FileRef.SkipLine ()
FileRef.SkipLine ()
Do Until FileRef.AtEndOfStream
strRptLine = FileRef.ReadLine ()
intGetFirstBlankPosition + 1)
Do Until FileRef.AtEndOfStream
FileRef.Close ()
Outro
astrReportArray (intArrayCounter) = “file DailyReturns.txt não estava disponível.” End If End Sub
Sub RecordSummaryData ()
intArrayCounter = 0
OutPutFile.WriteBlankLines (1)
“-----------------------------------”
OutPutFile.WriteBlankLines (1)
OutPutFile.WriteBlankLines (1)
OutPutFile.Close ()
End Sub
Sub WriteToEventLog ()
WshShl Dim
WshShl.LogEvent 4, “The Daily Retorna Relatório Analisador de Script agora está em execução.”
End Sub
As principais diferenças entre as vendas diárias e retornos diários relatam scripts do analisador são os
seguintes:
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]
ReportOn = HardAndSupl
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.
*******************************************************************************
*******************************************************************************
hardware:
DESENVOLVIMENTO ANALISADORES SCRIPT LOG Capítulo 18 427
-------------------------------------------------------------------------------
Suprimentos:
O script analisador relatório de produção diária, mostrado abaixo, está estruturado de forma muito semelhante às vendas
'Descrição: Este script recupera as definições de configuração de um arquivo INI,' processa um arquivo de
'Seção de inicialização
Option Explicit
cForWriting = 2 const
cForAppending = 8
428 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO
Padrões de configuração()
ProcessIniFile ()
RefineOutputFileName ()
WriteToEventLog () End
If
ProcessReportFile ()
RecordSummaryData ()
()
'Secção Procedimento
SetUpDefaults sub ()
End Sub
DESENVOLVIMENTO ANALISADORES SCRIPT LOG Capítulo 18 429
Sub ProcessIniFile ()
strInputLine = OpenFile.ReadLine
Sair não
End If
intGetEqualsPosition - 1)
Caso “SourDir”
“ReportOn”
“EventLog”
“destfile”
“Debug”
Fim se
laço
OpenFile.Close ()
Fim se
End Sub
Sub RefineOutputFileName ()
DataString Dim
End Sub
Sub ProcessReportFile ()
Dim intArrayCounter
intArrayCounter = 0
FileRef.SkipLine ()
FileRef.SkipLine ()
FileRef.SkipLine ()
Do Until FileRef.AtEndOfStream
strRptLine = FileRef.ReadLine ()
intGetFirstBlankPosition + 2)
Saia Do
End If
(intArrayCounter) = strRptLine
FileRef.SkipLine ()
FileRef.SkipLine ()
432 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO
FileRef.SkipLine ()
Do Until FileRef.AtEndOfStream
strRptLine = FileRef.ReadLine ()
intGetFirstBlankPosition + 2)
Saia Do
End If
(intArrayCounter) = strRptLine
End If 'loop
FileRef.Close ()
Outro
astrReportArray (intArrayCounter) = “file DailyProducton.txt não estava disponível.” End If End Sub
Sub RecordSummaryData ()
intArrayCounter = 0
OutPutFile.WriteBlankLines (1)
“-----------------------------------”
OutPutFile.WriteBlankLines (1)
OutPutFile.WriteBlankLines (1)
OutPutFile.WriteBlankLines (1)
OutPutFile.Close ()
End Sub
Sub WriteToEventLog ()
WshShl Dim
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
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:
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.
*******************************************************************************
*******************************************************************************
erros:
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:
-------------------------------------------------------------------------------
resumo do retorno:
-------------------------------------------------------------------------------
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.
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.
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.
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.
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
'Descrição: Este script demonstra a capacidade do objeto WshShell' método run () para sequencialmente
'************************************************* ************************
'Seção de inicialização
Option Explicit
WshShl Dim
()
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
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.
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.
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.
ArchiveManager.vbs, executará somente no primeiro dia de cada forma month.This Molly pode escrever um
Encontro()
Quando executado, ele devolve a data actual do sistema sob a forma de mm / dd / aaaa, tal como demonstrado abaixo.
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.
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.
Resume Next
WshShl Dim
“SalesAnalyzer.vbs”) RUNSCRIPT (
“ReturnsAnalyzer.vbs”) RUNSCRIPT (
“ProductionAnalyzer.vbs”)
()
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.
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 ()
NOTA
'Descrição: Este script é executado o relatório e log scripts do analisador', um de cada vez, esperando em cada
************************
'Seção de inicialização
Resume Next
WshShl Dim
“SalesAnalyzer.vbs”) RUNSCRIPT (
“ReturnsAnalyzer.vbs”) RUNSCRIPT (
“ProductionAnalyzer.vbs”)
()
448 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO
'Secção Procedimento
Sub WriteToEventLog ()
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.
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
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
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
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.
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.
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.
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.
Ao adicionar caracteres curinga, você pode excluir mais de um arquivo ao mesmo tempo, como demonstrado abaixo.
Neste exemplo, todos os arquivos no D: \ Temp pasta que tem um. TXT extensão de arquivo será excluído.
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.
Descrição
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 é 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
Em seguida, você precisa usar o FileSystemObject objeto de GetFile () método para recuperar uma referência para o
arquivo que você pretende excluir.
TargetFile.Delete ()
458 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO
NOTA
completo e o caminho do arquivo a ser administrada. Se o arquivo passado para o GetFile () método não for
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.
Descrição
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.
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.
Intage = GetUserAge () Se
GetUserAge função ()
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.
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
Condição
Posição em que for encontrada uma correspondência string2 encontrado dentro string1
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
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:
◆ WriteToEventLog (). Escreve uma cadeia de texto, passado para ele como uma variável, a
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 ()
MonthToDelete ()
RemoveOldSummaryFiles () Else
encerrado.”
()
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
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 ()
strDeleteMonth = strCurrentMonth - 2
Se strDeleteMonth = 0 Then
Se strDeleteMonth = -1 Então
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.
RemoveOldSummaryFiles sub ()
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
WshShl Dim
WshShl.LogEvent 4, strMessage
End Sub
'Descrição: Este script exclui todos os arquivos de relatório resumo com exceção de' arquivo de resumo de
'Seção de inicialização
Option Explicit
466 projeto 2 REGISTROS ANÁLISE DE APLICAÇÃO
strVerifyExecutionSchedule = OkToRunToday ()
MonthToDelete ()
RemoveOldSummaryFiles () Else
encerrado.”
()
'Secção Procedimento
OkToRunToday função ()
End Function
Sub MonthToDelete ()
strDeleteMonth = strCurrentMonth - 2
Se strDeleteMonth = 0 Then
Se strDeleteMonth = -1 Então
End Sub
RemoveOldSummaryFiles sub ()
End Sub
WshShl Dim
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
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
Este projecto vai exigir o uso de novos métodos FileSystemObject, a fim de gerir os relatórios de
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
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:
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:
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.
*******************************************************************************
*******************************************************************************
erros:
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
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
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:
Outros Clientes:
-------------------------------------------------------------------------------
resumo do retorno:
Governo:
Outros Clientes:
-------------------------------------------------------------------------------
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.
◆ Notificar equipe de operações por meio de uma caixa de diálogo pop-up quando o mas-
◆ 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.
- -
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
Molly em última análise produziu a seguinte lista de tarefas tal como mostrado na Tabela 21.1, cada uma das quais
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
Recuperação Remota Relatório Criar um script que se conecta a cada um dos servidores Windows 2000, cópias dos
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.
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
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:
ou pasta
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:
◆ 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
◆ WriteLine (). Para ser capaz de escrever uma linha de saída para o arquivo de resumo
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
Para automatizar a execução do script de gerenciamento de arquivo, Molly vai ter que trabalhar
com o seguinte FileSystemObject métodos de objeto:
◆ MoveFile (). Para mover um ou mais arquivos para uma pasta de arquivo para um mini-
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
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.