Escolar Documentos
Profissional Documentos
Cultura Documentos
O desenvolvimento de
um script de instalação
Eu n Neste capítulo, você vai aprender a ler, escrever e modificar dados armazenados no Registro do
Windows. Você vai aprender sobre o projeto básico do registro e da estrutura que ele usa para armazenar dados.
Você vai então aplicar esta informação através do desenvolvimento de um VBScript que cria uma nova chave de
registo. Os novos valores Store irá chave contendo informações de configuração para todos os VBScripts
desenvolvidos por Molly para execução na estação de trabalho do gerenciamento centralizado Windows 2000
Professional.
sistemas operacionais da Microsoft. Ele está disponível desde o Windows 95. A Microsoft e hardware de terceiros e
fornecedores de software usam o registro do Windows para armazenar informações sobre praticamente todos os
Ao alterar o conteúdo do registro, você pode administrar muitos aspectos da operação de um computador, bem como
o funcionamento do seu hardware e software. As pessoas trabalham com o registro o tempo todo, geralmente, mesmo
sem saber. A maioria das mudanças que os usuários fazem em seus desktops são armazenadas no Registro. Por
exemplo, você pode modificar as configurações de proteção de tela do Windows manualmente na caixa de diálogo de
NOTA
Para saber mais sobre as chaves do Registro e valores envolvidos na gestão do protetor de tela do Windows através
do registro, consulte o Capítulo 11, “Personalizando o Desktop.”
O registro é altamente confiável. Como resultado, a maioria dos desenvolvedores de hardware e software
migraram dados de seus arquivos INI para ele. Da mesma forma, você pode aproveitar o poder e conveniência
do registro, usando-o como um repositório central para todas as configurações de seus VBScript.
DESENVOLVIMENTO DE UM SCRIPT DE CONFIGURAÇÃO Capítulo 22 487
Windows
globais
compartilham o computador
são associados. Os valores podem ser comparados em muitas maneiras de arquivos, que armazenam dados no sistema
de arquivos do Windows. Os valores são organizados dentro de teclas que funcionam como uma espécie de pasta ou
recipiente. Um registro chave é um recipiente que armazena valores ou outras chaves de registro. Os dados são
Chave representa o nome totalmente qualificado de uma chave de registro. Tipo de chave especifica o tipo de dados que as
lojas principais. O registo armazena um número de diferentes tipos de dados, como mostrado na Tabela 22.2. Valor especifica
dados Descrição
%NOME DO COMPUTADOR%
REG_DWORD_BIG_ENDIAN Usado para armazenar um número inteiro de 32-bit em formato Big Endian
REG_DWORD_LITTLE_ENDIAN Usado para armazenar um número inteiro de 32-bit em formato Little Endian
REG_QWORD_LITTLE_ENDIAN Usado para armazenar um número inteiro de 64-bit em formato Little Endian
NOTA
Como cada arquivo e pasta gerenciada pelo sistema de arquivos NTFS do Windows, todos os Windows 2000 chave de
registo e valor é protegido usando permissões de segurança. Para ler ou modificar uma chave do registro ou valor, você
deve ter o conjunto apropriado de permissões de segurança.
computador, com a maioria das pessoas ignoram completamente que as mudanças que eles estão fazendo realmente
estão sendo armazenadas no registro. Além disso, muitos dos applets do Painel de Controle do Windows, que são
usados para configurar uma ampla variedade de funcionalidades do Windows, são realmente interfaces de registro
apenas user-friendly. As vantagens de trabalhar com as applets do painel de controlo são de que eles escondem as
complexidades do registo e proporcionar a validação de dados, evitando assim que os dados inválidos de ser
adicionada ao registo.
DESENVOLVIMENTO DE UM SCRIPT DE CONFIGURAÇÃO Capítulo 22 489
Você também pode visualizar diretamente o conteúdo do registro do Windows usando o regedit
mostra cinco chaves-raiz de alto nível do registro. o HKEY_CURRENT_CONFIG chave foi expandida para exibir as
configurações de vídeo do Windows atuais, os quais são armazenados como valores de cadeia (tipo de dados REG_SZ).
FIGURA 22.1 Examinando as configurações de vídeo do Windows armazenados no Registro usando o utilitário Regedit
NOTA
Se você estiver usando o Windows NT, 2000 ou XP, então você também tem a opção de editar o registro usando o regedt32
utilidade.
NOTA
Seja extremamente cuidadoso ao editar diretamente o registro do Windows usando o Regedit ou Regedt32. Nenhuma
destas utilidades fornece uma funcionalidade de anulação. Acidentalmente cometer um erro ao modificar o registro do
Windows pode ter efeitos potencialmente catastróficos em um computador, mesmo tornando-o inoperante. Se você não
tem certeza absoluta sobre os efeitos de fazer uma mudança em particular para o registro, então não fazê-lo.
490 projeto 3 CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO
NOTA
Note-se que ao contrário de métodos que pertencem a muitos objetos WSH que suportam administração de recursos
remoto através de uma conexão de rede, os métodos de manipulação de registro associados com o WshShell objeto não
fornecem a capacidade de administrar o registro do Windows em computadores remotos.
capacidade de:
ing chave, ou os dados a ser atribuído a um valor existente. Tipo é um parâmetro opcional que especifica um
valor string especificando o tipo de dados associado com um valor. Ao especificar uma chave de registro, o
valor de Nome deve terminar com uma barra invertida. Ao especificar um valor de registro, a barra invertida é
omitido. o RegWrite () método irá converter automaticamente o Valor parâmetro em uma string ou inteiro.
Quando especificado, o Tipo parâmetro identifica o tipo de dados a ser usado para armazenar os dados.
Embora o registo do Windows é capaz de armazenar vários tipos de dados, como mostrado na Tabela 22.2,
a RegWrite () método suporta apenas um subconjunto destes métodos, tal como listado abaixo.
◆ REG_SZ
◆ REG_EXPAND_SZ
◆ REG_DWORD
◆ REG_BINARY
NOTA
o REG_MULTI_SZ Tipo de dados não é suportada pela RegWrite () método mas é suportada pela RegRead
() método.
Para utilizar o RegWrite () método, tudo o que você tem a fazer é fornecer-lhe o nome de uma nova chave de
registro ou valor e especificar sua localização totalmente qualificado em uma das cinco chaves-raiz do
registro.
GORJETA
Cada chave de registo contém um valor padrão, que por padrão tem um tipo de dados
REG_NONE. Se quiser, você pode mudar o tipo de dados e os dados atribuído ao valor padrão.
O exemplo a seguir demonstra como criar uma nova chave de registo e valor.
Quando executado, este exemplo cria a chave HKCU \ TestKey \ e adiciona um novo valor chamado EventLogging,
que é então atribuído a string "Ativado", como mostrado na Figura 22.2.
nova chave
Novo valor
Você pode usar o RegWrite () método para modificar uma chave de registo existente ou valor, tal como demonstrado
abaixo.
Note que neste exemplo, nenhum nome valor foi fornecido. Como resultado, o método designado “Autor: Jerry
Ford” para o valor padrão da chave. O exemplo também explicitamente definido tipo de dados do valor
conforme REG_SZ.
Você pode armazenar qualquer número de valores do Registro sob uma única chave de registro. Por exemplo, as
seguintes declarações VBScript pode ser usado para armazenar dois valores adicionais sob a HKCU \ TestKey \.
NetworkNotification”, “Enabled”
Figura 22.3 mostra o estado da TestKey chave e os seus valores associados após a execução do
exemplo anterior.
◆ REG_BINARY
◆ REG_DWORD
◆ REG_EXPAND_SZ
◆ REG_MULTI_SZ
◆ REG_SZ
O exemplo a seguir demonstra como recuperar e exibir um dos valores de registo criados
pelos exemplos anteriores.
Se você executar uma RegRead () operação e especificar o nome de uma chave de registro em vez de um
valor, então o método retornará o valor padrão atribuído à chave de registro, como demonstrado abaixo.
esse valor é excluído. No entanto, se você especificar uma chave, a chave e todos os valores ou subchaves
armazenados debaixo dela são excluídos. O exemplo a seguir demonstra como excluir um valor do Registro.
Da mesma forma, você pode excluir uma chave de inteiro (juntamente com todas as suas subchaves e valores),
especificando o nome da chave totalmente qualificado seguido pelo caractere de barra invertida, como demonstrado
abaixo.
FIGURA 22.5 Um exemplo de um erro gerado quando um VBScript tenta ler um valor que não existe
Para evitar um erro de terminar a execução do seu script, você pode usar o On Error Resume Next declaração
e, em seguida, adicionar lógica para recuperar do erro.
496 projeto 3 CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO
Por exemplo, o procedimento a seguir demonstra como usar o Errar objeto para determinar se a
execução do RegRead () método foi bem sucedido.
MsgBox “Adicionar lógica para prosseguir com a configuração padrão e para registrar um evento“& _ ‘log mensagem.’ End
If
NOTA
Para mais informações sobre como trabalhar com o On Error Resume Next declaração eo Errar objeto, consulte o
Capítulo 6, “Coleta de Dados, Notificação e Relatório de Erros”.
O próximo exemplo amplia a anterior. Ele demonstra como criar uma função em um VBScript que pode
ser usado para verificar se uma chave do registro ou valor existe antes de seu script tenta acessar seu
conteúdo.
Outro
strEvtLogStatus = “Desativado”
If
Dim strKeyToTest
RegKeyExists = True
End Function
Este exemplo começa por instanciar o WshShell objeto. Em seguida, uma variável chamada strRegKey é
definido igual a HKCU \ TestKey \ EventLogging. Em seguida uma E se
declaração executa uma função chamada RegKeyExists () e passa o valor de
strRegKey. Esta função determina se existe a chave de registo. Se existir, um valor de Verdade
é retornado da função e o valor de uma variável chamada strEvtLogStatus é definido igual ao
valor de registo, executando o
RegRead () método. Se a função não retorna um valor de Verdade, em seguida, o valor de strEvtLogStatus é
definida igual a uma setting.This padrão permite que o script para continuar a executar. Uma mensagem
informativa também é gravado no log de eventos do aplicativo do Windows, como demonstrado na Figura
22.6.
498 projeto 3 CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO
FIGURA 22.6 Examinando o formato da mensagem gravada no log de eventos do aplicativo do Windows quando ocorre um erro
no script
o RegKeyExist () função aceita um único argumento, o nome de uma chave do registro ou valor. Ele começa
definindo uma variável chamada strKeyToTest. Em seguida, ele atribui uma variável, em homenagem a função,
um valor padrão de Verdade.
NOTA
Funções retornar um resultado de suas declarações que chamam pelo atribuindo o valor a ser devolvido a uma
variável que tem o mesmo nome que a função.
chave. Estes valores, bem como uma descrição das suas funções e as suas definições iniciais, estão listadas na
Tabela 22.3.
GORJETA
Molly também pode usar esse script para reinicializar os valores de registro usados por este projeto para os seus ajustes
iniciais. Além disso, alterando dados que estão associados a cada configuração no script, ela pode reutilizar o script para
modificar posteriormente esses valores, poupando-se assim o trabalho de editar manualmente o registro.
Descrição Valor
( continuou)
500 projeto 3 CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO
A seção de inicialização
Do script Inicialização Seção, mostrado abaixo, consiste em apenas três declarações. A primeira declaração se
transforma na aplicação rigorosa de nomenclatura de variáveis. A segunda instrução define uma variável
para o WshShell objecto e uma segunda variável, que vai ser utilizado no Seção de Processamento Principal para
determinar se o script tem permissão para run.The última declaração nesta seção inicializa o WshShell objeto.
Option Explicit
atribuídas. Desde o HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ chave não existirá na primeira
chamada para o CreateRegistryEntries ()
DESENVOLVIMENTO DE UM SCRIPT DE CONFIGURAÇÃO Capítulo 22 501
sub-rotina, a chave e o valor declarado será criado. As chamadas de função restantes, então,
armazenar valores adicionais sob essa chave. Uma vez que todas as chaves foram criadas, o script
termina a sua execução usando o WScript objeto de
Sair() método.
intResponse = GetPermissionToRun ()
Se intResponse = 6 Então
CreateRegistryEntries
CreateRegistryEntries
“Disabled”
CreateRegistryEntries
SERV0002” CreateRegistryEntries
CreateRegistryEntries
WScript.Quit ()
O GetPermissionToRun () Função
o GetPermissionToRun () função utiliza o VBScript embutido MsgBox ()
função para exibir um aviso que recebe a confirmação antes de permitir que o script para prosseguir.
Se o sim botão é clicado, um valor de 6 é devolvido à instrução de chamada. Se o Não botão é clicado,
um valor de 7 é retornado em vez.
Função GetPermissionToRun ()
502 projeto 3 CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO
“Valores para os VBScripts que são executados no Windows 2000“& _ ‘Professional estação de
gerenciamento centralizado.’ & VbCrLf & vbCrLf & _ ‘Você deseja continuar?’, 4)
End Function
Os CreateRegistryEntries () subrotina
o CreateRegistryEntries () sub-rotina, mostrado abaixo, aceita dois argumentos de entrada. Valor chave armazena
o nome da chave do registro ou valor a ser criados e
Dados contém os dados reais a serem atribuídos. o On Error Resume Next declaração é a primeira declaração
na sub-rotina. Ele foi adicionado para permitir que a sub-rotina para continuar a executar se ocorrer um erro
ao criar uma chave de registro individual ou de valor. Em seguida, o WshShell objeto de RegWrite () método é
usado para criar a nova chave ou valor. Então o Errar propriedade padrão do objeto (o Err.Number) é verificado
para ver se a operação de gravação foi bem sucedida. o MsgBox () função é usada para exibir uma
confirmação indicando se a chave foi criada ou ocorreu um erro.
End Sub
'Descrição: Este é o script de instalação para o Windows 2000 Professional' estação de trabalho de
gerenciamento centralizado. Ele cria uma chave de registro e atribui 'uma série de valores que serão utilizados
'************************************************* ************************
'Seção de inicialização
Option Explicit
intResponse = GetPermissionToRun ()
Se intResponse = 6 Então
CreateRegistryEntries
CreateRegistryEntries
“Disabled”
CreateRegistryEntries
SERV0002” CreateRegistryEntries
CreateRegistryEntries
\ LogFiles” CreateRegistryEntries
WScript.Quit ()
'Secção Procedimento
Função GetPermissionToRun ()
“valores para os VBScripts que são executados no Windows 2000 Professional“& _ ‘estação de trabalho de
gerenciamento centralizado.’ & vbCrLf & vbCrLf & _ ‘Você deseja continuar?’, 4)
End Function
End Sub
A Figura 22.7 mostra como a nova HKLM \ Software \ Intuit \ VBScripts \ MstRumRpts chave e seus
valores atribuídos aparecem quando vistos usando o utilitário Regedit.
DESENVOLVIMENTO DE UM SCRIPT DE CONFIGURAÇÃO Capítulo 22 505
FIGURA 22.7 Examinando a chave do Registro e valores criados pelo script de instalação
resumo
Neste capítulo, você aprendeu a trabalhar com o WshShell objeto de
RegRead (), RegWrite (), e RegDelete () métodos. Você também aprendeu sobre projeto básico do registro e os tipos
de dados que ele armazena. Você observou como Molly desenvolveu um VBScript que automatizado a
configuração de uma chave do registro que armazenados vários valores. Os valores foram então atribuído dados
que representam as definições de configuração que serão utilizados pelos VBScripts execução na estação de
trabalho do gerenciamento centralizado Windows 2000 Professional.
Esta página foi intencionalmente esquerda em branco
Capítulo 23
Coleta de Relatórios
Resumidos remoto
Eu n Neste capítulo, você vai aprender a escrever VBScripts que podem se conectar a unidades de rede
e, em seguida, administrar remotamente arquivos, copiar, mover, e excluí-los. Usando essa informação, você
vai aprender a desenvolver um script que recolhe os relatórios resumidos sobre os remotos servidores
Windows 2000 em Intuit. Como parte do desenvolvimento deste roteiro, você vai ter a oportunidade de
trabalhar ainda mais com o registro do Windows, recuperando definições de configuração do script.
Tarefas de pré-requisito
Antes de começar a trabalhar em seu novo projeto, Molly tem uma série de pequenas tarefas que precisa
realizar. Essas tarefas incluem:
◆ Criando um script de agendamento para ser usado para configurar a execu- automatizado
configurar a execução programada do script de agendamento. Isto irá fornecer roteiros do projeto
com as permissões de segurança pré-requisito que eles precisam para executar.
estação de trabalho profissional, a fim de configurar a execução automática de seu script de agendamento.
Molly criou este novo script, mostrada abaixo, copiando e modificando o script de agendamento que ela
desenvolveu para o projeto anterior.
'************************************************* ************************
'Seção de inicialização
Resume Next
WshShl Dim
RunScript ( “SumRptRetrieve.vbs”)
RUNSCRIPT ( “RptConsolidator.vbs”)
510 projeto 3 CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO
RUNSCRIPT ( “ArchiveMgr.vbs”)
()
'Secção Procedimento
Sub WriteToEventLog ()
ScriptSchd Conta de acesso a esta nova pasta de rede, conforme descrito no procedimento a seguir.
1. Depois de fazer logon em um servidor Windows 2000, Molly clica duas vezes no ícone Meu
computador. A caixa de diálogo Meu computador abre.
2. Ela então clica duas vezes em unidade D:, seguido pela pasta Order_Inventory. A pasta
Order_Inventory abre, mostrando o seu conteúdo.
opção no menu que aparece. Isso abre a caixa de diálogo Propriedades da pasta.
FIGURA 23,1 Criando um compartilhamento de rede para o SummaryRpts pasta localizada em cada um dos servidores Windows 2000
5. Em seguida, ela clica no botão Permissões. Isso exibe caixa de diálogo permissões SummaryRpts
para. A partir daqui, ela pode especificar quais usuários têm acesso remoto para a pasta
compartilhada. Ela começa por selecionar todas as contas atualmente definidas, um de cada
vez, e clicando em Remove. Ela então clica em Add e seleciona o ScriptSchd conta da lista de
contas de domínio que são exibidos.
6. Molly, em seguida, clica em OK três vezes para fechar todas as caixas de diálogo abertas.
Neste ponto, o SummaryRpts pasta é configurada como uma pasta de rede compartilhada para apenas o que ScriptSchd
conta de domínio tem acesso remoto.
NOTA
UMA unidade mapeada é uma conexão de rede lógica que faz com que uma unidade ou pasta olhar e agir compartilhada
como se ele estivesse conectado localmente para o computador onde a conexão mapeada é estabelecida.
NOTA
Para mapear uma unidade de rede ou pasta, você deve ser concedido o nível apropriado de direitos de
acesso e permissões no computador onde existe a unidade ou pasta compartilhada.
Os mesmos passos são seguidos para configurar manualmente qualquer conexão com uma unidade de rede ou
pasta e pode ser realizada a partir de qualquer número de pastas do Windows, incluindo o Windows Explorer e
minhas pastas de computador. Por exemplo, o procedimento a seguir descreve as etapas envolvidas na criação de
um mapeamento para uma pasta remota chamada SumReports em um computador chamado SERV0002.
RECOLHA DE relatórios resumidos REMOTO Capítulo 23 513
2. Clique em Ferramentas e selecione a opção do menu Mapear unidade de rede. A caixa de diálogo Mapear
FIGURA 23.2 criando uma conexão manualmente mapeado para uma pasta de rede
5. Para configurar um mapeamento de unidade persistente que será restaurado na próxima vez que você fizer
logon, certifique-se de que a reconexão opção logon é selecionada. Caso contrário, desmarque esta opção.
6. Clique em Concluir. A caixa de diálogo Mapear unidade de rede se fecha e é substituído por uma
janela do Explorer mostrando o conteúdo da pasta de rede, como demonstrado na Figura 23.3.
514 projeto 3 CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO
Depois que a conexão mapeada é estabelecida para uma unidade de rede ou pasta, você pode trabalhar com ele como
qualquer outra unidade de disco local (desde que você tenha as permissões de acesso de segurança apropriadas).
com a capacidade de estabelecer suas próprias conexões de rede para cada um de pastas compartilhadas
dos servidores Windows 2000. Para conseguir isso, Molly vai precisar usar métodos associados com a WshNetwork
objeto. o WshNetwork objeto expõe uma série de recursos relacionados à rede em redes Microsoft. Ele fornece
acesso a várias propriedades que podem ser usados para coletar informações sobre a rede. Estas
◆ Nome do computador
◆ UserDomain
◆ UserName
Em adição a estes métodos, o WshNetwork objeto disponibiliza uma série de métodos que fornecem a
capacidade de trabalhar com recursos de disco de rede e impressora. Estes métodos incluem:
◆ EnumNetworkDrives ()
◆ EnumPrinterConnection ()
◆ AddPrinterConnection ()
RECOLHA DE relatórios resumidos REMOTO Capítulo 23 515
◆ RemovePrinterConnection ()
◆ SetDefaultPrinter ()
◆ MapNetworkDrive ()
◆ RemoveNetworkDrive ()
NOTA
As seguintes declarações do VBScript demonstrar como para estabelecer uma conexão temporária para uma
unidade de rede ou pasta.
WshNtk Dim
Primeiro uma instância do WshNetwork objecto está configurado. Em seguida, a sua MapNetworkDrive () método é
executado, e que é passada uma letra de unidade para ser utilizada na criação do mapeamento e o caminho UNC
WshNtk Dim
WshNtk.RemoveNetworkDrive “z:”
Como você pode ver, é necessária apenas a letra da unidade que representa a conexão de rede.
Gerenciamento de arquivos
Administrando arquivos, localmente ou através de uma rede, envolve copiar, mover, e excluí-los. O
WSH fornece VBScript com a capacidade de administrar ficheiros utilizando métodos que pertencem à FileSystemObject
objeto. o FileSystem objeto objeto expõe o sistema de arquivos do Windows, permitindo que seus scripts
de interagir diretamente com e gerenciar it.The FileSystemObject objeto também fornece acesso ao Arquivo
objeto, que fornece métodos adicionais para copiar, mover e excluir arquivos individuais.
o FileSystemObject objeto fornece acesso direto a métodos que você pode usar para administrar arquivos.
Alguns destes métodos estão listados abaixo.
pasta ent
permite que você manipule um ou mais arquivos de uma vez. Eles podem ser usados para administrar os arquivos
em qualquer unidade à qual o computador tem uma conexão (desde que o nível adequado de acesso de segurança
está disponível). Para mais informações sobre esses métodos, consulte o Capítulo 14.
RECOLHA DE relatórios resumidos REMOTO Capítulo 23 517
◆ Excluir(). Oferece a capacidade de excluir o arquivo especificado ou pasta Uma diferença importante
entre estes três métodos e os métodos fornecidos pela FileSystemObject objeto são que o Arquivo métodos
do objeto só pode ser usado para trabalhar com um arquivo de cada vez. Outra diferença é que o Arquivo métodos
do objeto também pode ser usado para administrar pastas, enquanto que o FileSystemObject
objeto fornece um conjunto totalmente diferente dos métodos para trabalhar com pastas. Para trabalhar com o Arquivo
para configurar uma instância do Arquivo objeto, que irá representar o arquivo que você deseja administrar.
Você pode então executar qualquer um dos
Arquivo métodos do objeto. Dos três Arquivo métodos de objetos listados acima, Molly precisa aprender a
trabalhar com o Cópia de() método. Usando este método, ela planeja copiar o relatório de síntese de ambos
os servidores Windows 2000 todas as manhãs para o processamento na estação de trabalho do Windows
que, quando fixado igual a Verdade, obriga um arquivo existente ou pasta a ser substituído.
As seguintes declarações do VBScript demonstrar como usar o Cópia de() método para copiar um arquivo
chamado TestFile.txt localizado no D: \ Temp pasta para uma pasta em uma unidade de rede mapeada.
Temp \ TestFile.txt“
518 projeto 3 CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO
Molly está agora pronto para começar a escrever o roteiro resumo do relatório coleção. Este script será
responsável por recuperar e armazenar cópias locais dos relatórios resumidos gerados a cada manhã
nos servidores Windows 2000 onde o sistema de ordem / inventário reside. Este script será executado
pelo script de programação e será imediatamente seguido por um script que processa os relatórios que
ele recupera.
A seção de inicialização
Molly começa o script, como todos os seus outros scripts, com a Option Explicit
declaração, a fim de impor a interpretação estrita de nomes de variáveis. Próxima, variáveis utilizadas
em todo o roteiro são definidos, ea WshNetwork, FileSystemObject, e WshShell objetos são instanciados.
Finalmente, uma constante é definido que será utilizado em todas as caixas de diálogo pop-up
mostradas pelo script.
Option Explicit
Dim strEventLog, strDebug, strSvrList, strFolderList, strArchive Dim WshNtk, FsoObj, WshShl,
strSumRptFileName
WScript.CreateObject ( “WScript.Shell”)
o MapNetworkDrive () função é executada duas vezes, uma para cada servidor Windows 2000. A letra
de unidade e um caminho UNC é passada para a função de cada vez. O caminho UNC é criada,
antecedendo o \\ caracteres para o nome de um dos servidores Windows 2000, que é extraído a partir
da variável strSvrList
utilizando o Esquerda() ou Certo() função, a barra invertida (\), e o nome da pasta de rede
compartilhada no servidor Windows 2000 ( Lista strFolder).
SetDefaultSettings ()
GetRegistrySettings ()
MapNetworkDrive “X:”, “\\” & Esquerda (strSvrList, 8) e “\” & strFolderList MapNetworkDrive “Y”, “\\” & Right
strSumRptFileName = GetSummaryRptFileName ()
DisconnectNetworkDrive ( “X:”)
DisconnectNetworkDrive ( “Y”)
TerminateScript ()
conexões estabelecidas com pastas de rede compartilhadas do Windows 2000 Server de. Se for apropriado, outra
mensagem é gravada no log de eventos do aplicativo do Windows eo
TerminateScript () sub-rotina é executado, a fim de parar a execução de scripts.
Os SetDefaultSettings () subrotina
o SetDefaultSettings () sub-rotina, mostrada abaixo, define as configurações padrão para o script.
Estas definições serão usadas para controlar a operação do script no evento que há um problema
ao acessar valores do Registro correspondentes.
SetDefaultSettings sub ()
strFolderList = “SumReports”
“StrEventLog” & vbTab & “=” & vbTab & strEventLog & vbCrLf & _ “strDebug” & vbTab & vbTab & “=” &
vbTab & strDebug & vbCrLf & _ “strSvrList” & vbTab & vbTab & “=” & vbTab & strSvrList & vbCrLf & _
“strFolderList” & vbTab & “=” & vbTab & strFolderList & vbCrLf & _ “strArchive” & vbTab & “=” & vbTab &
End Sub
Se o script está sendo executado no modo de depuração (isto é, o valor de strDebug é igual a Ativado) em
seguida, o VBScript MsgBox () função é usada para visualizar o valor de cada variável.
Os GetRegistrySettings () subrotina
o GetRegistrySettings () sub-rotina, mostrado na página seguinte, começa por executar o On Error
Resume Next declaração, a fim de evitar que um problema em recuperar a configuração do registro
do Windows a partir de travar configuração
RECOLHA DE relatórios resumidos REMOTO Capítulo 23 521
a execução do script. Isso permitirá que o script para prosseguir através de uma configuração em caso de necessidade
padrão.
Em seguida, o sub-rotina tenta ler um valor de registro, onde uma das definições de configuração do script
é armazenado. O valor de Err.Number ( a propriedade padrão do Errar objeto) é examinado para determinar
se ocorreu um erro. Se um erro realmente ocorreu e registro estiver ativado, uma mensagem é gravada no
log de eventos do aplicativo Windows e o valor de Err.Number é reposto a zero para limpar o erro antes que
o próximo valor do registro é lido. O processo acima se repete até que todos os valores de registro do
script foram processadas.
GetRegistrySettings sub ()
strEventLog = _
WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ EventLogging”) Se Err <> 0 Then
= 0 End If End If
strDebug = WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ DebugMode”) Se Err <> 0 Then
strSvrList = _
WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ Win2000Svrs”) Se Err <> 0 Then
0 End If End If
strFolderList = _
WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ SharedFolder”) Se Err <> 0 Then
0 End If End If
strArchive = _
WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ RptArchive”) Se Err <> 0 Then
= 0 End If End If
“StrEventLog” & vbTab & “=” & vbTab & strEventLog & vbCrLf & _ “strDebug” & vbTab & vbTab & “=” &
vbTab & strDebug & vbCrLf & _ “strSvrList” & vbTab & vbTab & “=” & vbTab & strSvrList & vbCrLf & _
“strFolderList” & vbTab & “=” & vbTab & strFolderList & vbCrLf & _ “strArchive” & vbTab & “=” & vbTab &
End Sub
Finalmente, se o script está sendo executado no modo de depuração, em seguida, a sub-rotina usa o VBScript MsgBox
() função de exibir o valor de cada variável. Exibindo os valores das variáveis uma segunda vez auxilia Molly em
roteiro. Enquanto ela está a desenvolver e testar o script, ela configura este valor de
strDebug para igual Ativado. Mais tarde, quando é feito testando o script, ela vai mudar o valor dessa
variável no registro do Windows para Desativado.
O MapNetworkDrive () Função
o MapNetworkDrive () função, mostrada abaixo, aceita dois argumentos. O primeiro argumento é a letra da
unidade a ser usado na criação de uma conexão de rede, eo segundo argumento é o caminho UNC de
uma das pastas de rede compartilhadas que residem nos servidores Windows 2000. Numerosos
resultados intermediários são exibidos em caixas de diálogo pop-up como executa a função (se o script é
executado no modo de depuração). o FileSystemObject objeto de O arquivo existe() método é usado para
determinar se ou não a pasta de rede, como especificado strDrive, é acessível (a rede não está para baixo,
existe a pasta, e assim por diante). Se a pasta está acessível, outro exame é realizado para determinar se
ou não a letra da unidade especificada ( strLetter) está em uso. Se for, então sua conexão é eliminada, a fim
de liberar a letra da unidade para o script. No entanto, se a pasta de rede não pode ser acessado quando
testado pela primeira vez, o TerminateScript () sub-rotina é chamada eo script termina a sua execução.
Fim se
WshNtk.RemoveNetworkDrive strLetter
Fim se
Outro
WriteToEventLog “roteiro Relatório Resumido Collection - Não é possível mapear“& _ “para a rede drive“e
strDrive End If
TerminateScript () End If
End Function
finalmente, o WshNetwork objeto de MapNetworkDrive () método é executado e passou uma letra de unidade e o
caminho UNC para uma pasta de rede compartilhada.
O GetSummaryRptFileName () Função
o GetSummaryRptFileName () função, mostrada na página seguinte, determina o nome dos relatórios
resumidos atuais. Fá-lo através do preenchimento de uma série de passos. Primeiro, o Encontro() função
para obter a data atual do sistema. Então o
Substituir() função é utilizada para substituir todas as instâncias do caractere de barra invertida (/), que é
especificado dentro da data atual com o traço ( -) personagem. Finalmente, o valor da cadeia de _ SumRpt.txt é
anexado ao final da data do sistema reformatado para chegar ao nome do arquivo do relatório de síntese. Este
nome do arquivo é devolvido para a declaração que chamou esta função através da atribuição de seu valor
para uma variável que tem o mesmo nome que a função.
RECOLHA DE relatórios resumidos REMOTO Capítulo 23 525
GetSummaryRptFileName função ()
cTitleBarMsg End
If
End Function
Os CopyFolders () subrotina
o CopyFolders () sub-rotina, mostrado abaixo, começa por determinar se ou não o relatório de síntese
está acessível. Se ele não estiver acessível, a execução do script é encerrado chamando o TerminateScript
() sub-rotina. Se for acessível, o FileSystemObject objeto de GetFile () método é usada para instanciar
uma instância do Arquivo objeto e criar uma associação com um relatório de síntese (conforme
especificado pelo strFileNameToCopy).
strFileName Dim
MsgBox “Arquivo“e strFileNameToCopy & “encontrado. Agora copiar ...”, _ cTitleBarMsg End If Else
MsgBox “Arquivo“e strFileNameToCopy & “não existe. Parar “& _‘a execução do script.’, CTitleBarMsg
End If
TerminateScript () End If
526 projeto 3 CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO
<> 0 Then
strFileNameToCopy End
If
TerminateScript () End If
End Sub
Uma vez instanciado, o Arquivo objeto de Cópia de() método é usado para copiar e mudar o nome do
relatório de síntese para uma pasta local na estação de trabalho do Windows 2000 Professional. O valor
armazenado na strArchive especifica a pasta onde o relatório de síntese deve ser armazenado. O nome do
relatório de síntese é alterado anexando o caractere de barra invertida (\), o valor de strServerName, o
sublinhado (_) caracteres, e o valor de strFileNameToCopy ( menos a letra da unidade especificada nos três
primeiros caracteres do strFileNameToCopy).
O DisconnectNetworkDrive () subrotina
Uma vez que cópias de ambos os relatórios resumidos foram copiados para a estação de trabalho do
Windows 2000 Professional, o DisconnectNetworkDrive () sub-rotina é executado duas vezes. A sub-rotina
começa executando o On Error Resume Next declaração, a fim de prevenir qualquer problema que pode
ocorrer quando desconectar uma conexão de carro de travar a execução do script. Cada vez que a
sub-rotina é chamada, uma letra de unidade diferente é passado para ele, especificando a conexão de
rede a ser desligado.
Then
cTitleBarMsg End
If End If
End Sub
O WriteToEventLog () subrotina
o WriteToEventLog () sub-rotina aceita um único argumento que representa uma mensagem a ser gravada no log de
eventos do aplicativo da estação de trabalho do Windows 2000 Professional. Em seguida, ele escreve esta
WshShl.LogEvent 4, strMessage
End Sub
O TerminateScript () subrotina
o TerminateScript () sub-rotina, mostrado abaixo, exibe uma mensagem de terminação em uma caixa de diálogo
pop-up, se o script é executado no modo de depuração. Em seguida, ele executa o WScript objeto de Sair() método
para parar a execução do script.
Sub TerminateScript ()
WScript.Quit ()
End Sub
'Descrição: Este script copia arquivos de servidores remotos para um centro de' pasta em uma estação de
'************************************************* ************************
'Seção de inicialização
Option Explicit
Dim strEventLog, strDebug, strSvrList, strFolderList, strArchive Dim WshNtk, FsoObj, WshShl,
strSumRptFileName
WScript.CreateObject ( “WScript.Shell”)
SetDefaultSettings ()
RECOLHA DE relatórios resumidos REMOTO Capítulo 23 529
GetRegistrySettings ()
MapNetworkDrive “X:”, “\\” & Esquerda (strSvrList, 8) e “\” & strFolderList MapNetworkDrive “Y”, “\\” & Right
strSumRptFileName = GetSummaryRptFileName ()
DisconnectNetworkDrive ( “X:”)
DisconnectNetworkDrive ( “Y”)
TerminateScript ()
'Secção Procedimento
SetDefaultSettings sub ()
strFolderList = “SumReports”
“StrEventLog” & vbTab & “=” & vbTab & strEventLog & vbCrLf & _ “strDebug” & vbTab & vbTab &
“StrSvrList” & vbTab & vbTab & “=” & vbTab & strSvrList & vbCrLf & _ “strFolderList” & vbTab & “=” &
vbTab & strFolderList & vbCrLf & _ “strArchive” & vbTab & “=” & vbTab & strArchive, , cTitleBarMsg End If
End Sub
GetRegistrySettings sub ()
strEventLog = _
WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ EventLogging”) Se Err <> 0 Then
= 0 End If End If
strDebug = WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ DebugMode”) Se Err <> 0 Then
strSvrList = _
WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ Win2000Svrs”) Se Err <> 0 Then
0 End If
RECOLHA DE relatórios resumidos REMOTO Capítulo 23 531
Fim se
strFolderList = _
WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ SharedFolder”) Se Err <> 0 Then
0 End If End If
strArchive = _
WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ RptArchive”) Se Err <> 0 Then
= 0 End If End If
“StrEventLog” & vbTab & “=” & vbTab & strEventLog & vbCrLf & _ “strDebug” & vbTab & vbTab & “=” &
vbTab & strDebug & vbCrLf & _ “strSvrList” & vbTab & vbTab & “=” & vbTab & strSvrList & vbCrLf & _
“strFolderList” & vbTab & “=” & vbTab & strFolderList & vbCrLf & _ “strArchive” & vbTab & “=” & vbTab &
End Sub
strDrive, cTitleBarMsg
532 projeto 3 CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO
Fim se
WshNtk.RemoveNetworkDrive strLetter
Fim se
Outro
WriteToEventLog “roteiro Relatório Resumido Collection - Não é possível mapear“& _ “para a rede drive“e
strDrive End If
TerminateScript () End If
End Function
GetSummaryRptFileName função ()
cTitleBarMsg End
If
End Function
strFileName Dim
MsgBox “Arquivo“e strFileNameToCopy & “encontrado. Agora copiar ...”, _ cTitleBarMsg End If Else
MsgBox “Arquivo“e strFileNameToCopy & “não existe. Parar “& _‘a execução do script.’, CTitleBarMsg
End If
TerminateScript () End If
<> 0 Then
strFileNameToCopy End
If
TerminateScript () End If
End Sub
Then
cTitleBarMsg End
If End If
End Sub
WshShl.LogEvent 4, strMessage
End Sub
Sub TerminateScript ()
WScript.Quit ()
End Sub
Figura 23.4 mostra o relatório de síntese arquivos uma vez que eles foram copiados de cada servidor
Windows 2000 pela primeira vez. Eles são armazenados na estação de trabalho do Windows 2000
Professional em D: \ Order_Inventory \ LogFiles. Como você pode ver, cada um dos nomes de arquivo relatório
de síntese foi modificado para incluir o nome do servidor a partir do qual foram recolhidas.
FIGURA 23.4 Examinando os arquivos de relatório resumo depois de terem sido copiados para a estação de trabalho
Windows 2000 Professional
resumo
Este capítulo mostrou como criar VBScripts que podem estabelecer conexões remotas para unidades de rede
compartilhadas. Você também aprendeu como copiar, mover e excluir arquivos de rede. Você observou como Molly
estação de trabalho do Windows 2000 Professional para processamento posterior. No processo, você reforçou sua
Expressão representa o string a ser processado. delimitador especifica um carácter opcional que identifica
limites de subcadeia. Se omitido, o caractere de espaço é assumido. Contagem é um parâmetro opcional que
pode ser usado para limitar o número de substrings recuperados, e Comparar é um parâmetro opcional que
especifica o tipo de comparação para executar (especificar um valor de 0 para realizar uma comparação
binária e um valor de 1 para realizar uma comparação de texto).
PROCESSAMENTO E CONSOLIDAÇÃO relatório de dados Capítulo 24 539
Split (strlista)
Aparar( corda)
Corda especifica a cadeia a ser processado pela função. O exemplo a seguir mostra uma instrução que
constrói uma corda preenchido com um número de espaços em branco. A declaração é seguida por uma MsgBox
() declaração de que usa o Aparar() função para remover os espaços em branco estranhos antes de exibir o
conteúdo da string.
CInt ( Expressão)
Expressão representa uma expressão de cadeia. Esta função é útil quando se extrai valores numéricos a partir de
Neste exemplo, uma cadeia de caracteres está definido e, em seguida, analisada utilizando o Mediana () função para
extrair o número de unidades na mão. Enquanto VBScript normalmente faz um bom trabalho de conversão de valores de
um subtipo de variante para outra, como quando você especificar uma operação matemática, há também momentos em
ajuste corretamente. usando o CInt () função, como mostrado acima, pode explicitamente converter um valor para um
Corda representa uma string cujo comprimento deve ser calculado. Em VBScript deste capítulo, o Len () função
será usada repetidamente para determinar se ou não uma linha em branco foi encontrado dentro de um
arquivo de relatório (ou seja, uma cadeia de comprimento zero). Por exemplo, a seguir E se declaração
demonstra como determinar se uma variável foi atribuído nenhum dado. Se não foi atribuído dados, seu
comprimento será igual a zero. Neste exemplo, uma ação seja tomada apenas quando há alguns dados a
serem processados.
...
Fim se
os dados encontrados nestes dois relatórios para criar um novo relatório de síntese consolidada. Este
relatório estará disponível em dois formatos diferentes, o formato de texto padrão apresentados em
exemplos anteriores e um formato Microsoft Word opcional. A versão Word do relatório pode torná-lo mais
conveniente para muitas pessoas no Intuit para ver o relatório, que será formatado usando fontes
diferentes e caráter seletivo realce para torná-lo mais atraente do que o seu homólogo de texto simples.
Para escrever a versão do Word do relatório consolidado, você terá que aprender como fazer referência e
trabalhar com o modelo de objeto do Word. No topo do modelo de objeto do Word é o Aplicação objeto.
Quando o Word é iniciado, uma instância da Aplicação objeto é criado automaticamente. Você pode usar as
propriedades e métodos que pertencem a esse objeto para acessar objetos de nível inferior e coleções no
modelo de objeto do Word. Você pode então usar as propriedades e métodos fornecidos por esses
objetos e coleções para automatizar a criação de relatórios usando o Word. A declaração a seguir
demonstra como criar uma instância do Word a partir de um VBScript:
Esta declaração atribui uma referência à Palavra Aplicação objecto sob a forma de uma variável
chamada objMsWord. A fim de criar a versão do Word do relatório de síntese consolidada, você terá
que aprender a trabalhar com os seguintes objetos do Word:
◆ Fonte. Fornece acesso a propriedades que podem ser usadas para formatar o
aparência do texto dentro de documentos. o Fonte objecto é acedido usando o Seleção objeto
de Fonte propriedade.
542 projeto 3 CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO
outra útil Aplicação propriedade do objeto é ActiveDocument, que recupera uma referência ao
documento do Word actualmente activa. O exemplo a seguir demonstra como usar esses objetos e
suas propriedades e métodos para criar, gravar e salvar um arquivo do Word. A documentação para
cada instrução usado dentro do script é fornecido por comentários embutidos dentro do próprio
script.
'Define a variável a ser utilizado para armazenar uma referência para o objecto de aplicação Dim objWordDoc
WScript.CreateObject ( ‘Word.Application’)
'Use o método Add da coleção Documentos para abrir um novo documento do Word vazio objWordDoc.Documents.Add
()
'Use o objeto Font nome, tamanho e propriedades Negrito para formatar a saída de texto
= True
'Use o método do objeto Selection TypeText () para escrever uma linha de texto
'Use método do objecto Selection TypeParagraph () para inserir duas alimentações de linha
objWordDoc.Selection.TypeParagraph objWordDoc.Selection.TypeParagraph
'Use o tamanho do objeto Font e propriedade Negrito para formatar a saída de texto
objWordDoc.Selection.TypeParagraph
'Use propriedade ActiveDocument do objeto Applications para fazer referência ao atual documento e, em seguida, usar
'Arquivo
do Word ()
NOTA
Devido ao tamanho e complexidade do modelo de objeto do Word, não há espaço suficiente neste livro para cobri-lo
em qualquer maior profundidade. Para saber mais sobre modelo de objeto do Word, confira msdn.Microsoft.com/office.
que isso não iria funcionar, porque o script que cria o relatório de consolidação é executado em segundo plano
usando o WScript.exe hospedeiro execução. Portanto, mesmo se ela tenta usar o MsgBox () função para exibir
uma caixa de diálogo interativa pop-up, a caixa de diálogo pop-up não será exibida. Em vez disso, o script iria
parar o processamento enquanto esperava para o usuário responder à caixa de diálogo pop-up, que nunca
viria, uma vez que a caixa de diálogo pop-up não foi exibido. Depois de fazer um pouco de pesquisa, Molly veio
através do Windows net Send comando. Este comando fornece a capacidade de enviar uma mensagem de texto
através de uma rede para um usuário ou computador especificado. A sintaxe do net Send comando é mostrado
abaixo.
Nome representa o nome de um usuário ou computador para quem a mensagem está a ser enviada. Para que o
usuário receber ou computador para receber e exibir a mensagem pop-up, o serviço de mensagens do
Windows deve estar em execução no seu computador. Além disso, o usuário deve estar conectado ao seu
computador no momento em que a mensagem é enviada. O asterisco (*) pode ser usado para enviar a
mensagem para todos os usuários dentro do domínio ou grupo de trabalho ao qual o computador de envio é
membro. O / nome do domínio parâmetro pode ser usado para enviar a mensagem a todos os nomes definidos no
domínio do Windows. O / Comercial parâmetro fornece a capacidade de enviar a mensagem a todos os usuários
com uma conexão de rede ativa para o computador de envio. mensagem representa o texto da mensagem que
está a ser exibido na caixa de diálogo pop-up. Para utilizar o net Send comando de dentro de um script, você
precisa usar o
Quando executado, este exemplo mostra a caixa de diálogo pop-up mostrado na Figura 24.1 no computador onde o
FIGURA 24.1 Examinar o conteúdo de uma mensagem de rede criada usando o net Send mand com-
O script de criação de relatório de síntese consolidada realiza uma série de tarefas diferentes. Ele lê e
armazena o conteúdo de ambos os relatórios resumidos em duas matrizes distintas. Em seguida, ele gira
através de ambas as matrizes, análise fora dado a ser usada para criar o relatório de síntese consolidada.
Este processo envolve várias funções stringrelated VBScript. Além de criar o relatório de texto padrão, o
script tem
PROCESSAMENTO E CONSOLIDAÇÃO relatório de dados Capítulo 24 545
a capacidade de criar uma versão do Word. Outras actividades de script incluem a recuperação de definições de
configuração do registro do Windows, suportando um modo de depuração, mensagens de log de eventos do aplicativo
A seção de inicialização
Do script Inicialização Seção, mostrada abaixo, define as variáveis usadas globalmente em todo o script.
Além disso, ele define três matrizes dinâmicas, que serão usados para armazenar o conteúdo dos
relatórios, enquanto eles estão sendo processados. Um conjunto de constantes e instâncias do WshShell
e FileSystemObject
objetos também são definidos aqui.
Option Explicit
Dim strEventLog, strDebug, strSvrList, strArchive, strConsolFolder Dim strRpt1, strRpt2, strConSolRptName,
strRptFormat, strNetworkNotification
astrProductionArray (0)
CreateObject ( “Scripting.FileSystemObject”)
Se necessário, a
SetDefaultSettings () ()
GetRegistrySettings
IdentifyRptsToProcess ()
CreateConsolidatedTextReport ()
CreatConsolidatedWordReport () End If
NotifyOperationsStaff () End If
TerminateScript ()
Os SetDefaultSettings () subrotina
Como demonstrado nos scripts anteriores, o SetDefaultSettings () sub-rotina, mostrado abaixo, estabelece
definições de configuração padrão para o script.
SetDefaultSettings sub ()
strNetworkNotification = “Habilitado”
MsgBox “Configurações do Registro recuperadas:“& vbCrLf & vbCrLf & _ ‘strEventLog’ & vbTab & ‘=’ & vbTab &
strEventLog & vbCrLf & _ ‘strDebug’ & vbTab & vbTab & ‘=’ & vbTab & strDebug & vbCrLf & _ “ strSvrList”&
vbTab & vbTab &‘=’& vbTab & strSvrList & vbCrLf & _‘strArchive’& vbTab &‘=’& vbTab & strArchive & vbCrLf &
_‘strRptFormat’& vbTab &‘=’& vbTab & strRptFormat & vbCrLf & _ “strNetworkNotification” & vbTab & “=” & vbTab
vbCrLf & _
“StrConsolFolder” & vbTab & “=” & vbTab & strConsolFolder, cTitleBarMsg End If
End Sub
Os GetRegistrySettings () subrotina
o GetRegistrySettings () sub-rotina, mostrado abaixo, recupera as configurações de registro do
Windows e registra mensagens no log de eventos do aplicativo do Windows se ocorrer erros.
GetRegistrySettings sub ()
548 projeto 3 CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO
strEventLog = _
WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ EventLogging”) Se Err <> 0 Then
“Para strEventLog.”)
strDebug = WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ DebugMode”) Se Err <> 0 Then
strSvrList = _
WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ Win2000Svrs”) Se Err <> 0 Then
0 End If End If
strArchive = _
WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ RptArchive”) Se Err <> 0 Then
Err.Number = 0 End
If End If
strRptFormat = _
WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ RptFormat”) Se Err <> 0 Then
= 0 End If End If
strNetworkNotification =
Err.Number = 0 End
If End If
strConsolFolder = _
WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ ConsolFolder”) Se Err <> 0 Then
0 End If End If
MsgBox “Configurações do Registro recuperadas:“& vbCrLf & vbCrLf & _ ‘strEventLog’ & vbTab &
‘=’ & vbTab & strEventLog & vbCrLf & _ ‘strDebug’ & vbTab & vbTab & ‘=’ & vbTab & strDebug &
vbCrLf & _
550 projeto 3 CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO
“StrSvrList” & vbTab & vbTab & “=” & vbTab & strSvrList & vbCrLf & _ “strArchive” & vbTab & “=” & vbTab &
strArchive & vbCrLf & _ “strRptFormat” & vbTab & “=” & vbTab & strRptFormat & vbCrLf & _
“strNetworkNotification” & vbTab & “=” & vbTab & strNetworkNotification & _
vbCrLf & _
“StrConsolFolder” & vbTab & “=” & vbTab & strConsolFolder, cTitleBarMsg End If
End Sub
O IdentifyRptsToProcess () subrotina
A lógica apresentada no IdentifyRptsToProcess () sub-rotina já foi demonstrado inúmeras vezes
em outras VBScripts apresentados neste livro. Esta sub-rotina é responsável por definir o valor
atribuído a uma variável que identifica o nome de relatórios resumidos do dia atual.
Sub IdentifyRptsToProcess ()
strFileNameString Dim
“_ConsolSumRpt.txt”
strRpt1 = strArchive & “\” & Esquerda (strSvrList, 8) e “_” e strFileNameString strRpt2 = strArchive & “\” & Right
MsgBox “1º relatório de síntese de processo =“& strRpt1 & vbCrLf & _ “segundo relatório de
End Sub
PROCESSAMENTO E CONSOLIDAÇÃO relatório de dados Capítulo 24 551
O ReadSummaryReport () subrotina
o ReadSummaryReport () sub-rotina, ilustrada a seguir, utiliza o FileSystem objeto objeto de O
arquivo existe(), OpenTextFile (), ReadLine (), e
Fechar() métodos e um Fazer enquanto loop para processar o relatório de síntese adequada. O relatório a ser
processada é identificada por um argumento passado para a sub-rotina. A sub-rotina armazena o conteúdo
de cada relatório em um array chamado quer
astrServ0001Array ou astrServ0002Array.
Dim strSourFile
intArrayCounter = 0
Do Until FileRef.AtEndOfStream
strRptLine = FileRef.ReadLine ()
End If
End If Else
intArrayCounter = intArrayCounter + 1
laço
FileRef.Close ()
Outro
strSourFile)
TerminateScript () End If
End Sub
O CreateConsolidatedTextReport () subrotina
o CreateConsolidatedTextReport (), mostrado abaixo, cópias cada relatório de síntese em uma matriz e em
seguida cria o relatório de síntese consolidada por processar os conteúdos de ambas as matrizes. Ele usa
uma variedade de funções de análise VBScript para testar, extracto, e manipular o conteúdo de cada linha em
cada relatório de síntese antes de adicionar os seus dados para o relatório de síntese consolidada.
Sub CreateConsolidatedTextReport ()
Dim intArrayCounter, outputFile, strMessage, strLocator Dim intQtyOne, intQtyTwo, intTotalQty, intSpacing,
intArrayCounter = 0
PROCESSAMENTO E CONSOLIDAÇÃO relatório de dados Capítulo 24 553
strLocator = “false”
OutPutFile.WriteLine
“************************************************* ******************************”
OutPutFile.WriteBlankLines (1)
OutPutFile.WriteLine
“************************************************* ******************************”
OutPutFile.WriteBlankLines (1)
OutPutFile.WriteLine “erros:”
OutPutFile.WriteBlankLines (1)
intArrayCounter Em astrServ0001Array
Então
Próximo
intArrayCounter = 0 strLocator
= “false”
intArrayCounter Em astrServ0002Array
Então
Próximo
OutPutFile.WriteBlankLines (1)
“------------------------------”
OutPutFile.WriteBlankLines (1)
OutPutFile.WriteBlankLines (1)
intArrayCounter = 0 strLocator
= “false”
intArrayCounter Em astrServ0001Array
End If End If
556 projeto 3 CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO
Fim se
Próximo
OutPutFile.WriteBlankLines (1)
intArrayCounter = 0 strLocator
= “false”
intArrayCounter Em astrServ0002Array
Próximo
PROCESSAMENTO E CONSOLIDAÇÃO relatório de dados Capítulo 24 557
OutPutFile.WriteBlankLines (1)
“-----------------------------”
OutPutFile.WriteBlankLines (1)
OutPutFile.WriteBlankLines (1)
intArrayCounter = 0 strLocator
= “false”
intArrayCounter Em astrServ0001Array
Próximo
OutPutFile.WriteBlankLines (1)
intArrayCounter = 0 strLocator
= “false”
intArrayCounter Em astrServ0002Array
Próximo
OutPutFile.WriteBlankLines (1)
“-----------------------------”
OutPutFile.WriteBlankLines (1)
OutPutFile.WriteBlankLines (1)
OutPutFile.WriteBlankLines (1)
intArrayCounter = 0 strLocator
= “false” intCounter2 = 0
'Processar a seção Resumo produção diária para o primeiro servidor para cada intArrayCounter Em
astrServ0001Array
End If
Próximo
intCounter2 = 0
560 projeto 3 CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO
intArrayCounter = 0 strLocator
= “false”
'Processar a seção Resumo produção diária para o primeiro servidor para cada intArrayCounter Em
astrServ0002Array
strMatch = “True”
Mediana (intArrayCounter, 1, 5)
'Extrato qty para ambas as entradas, adicionar esses valores juntos e' escrever uma única
entrada
5 - intSpacing
'Extrato Em armazém valor para ambas as entradas, adicionar esses valores' juntos e
intTotalQty & Space (intSpacing) & _ Mid (intArrayCounter, 14, 25) e espaço
End If End
If End If End If
Próximo
'não-duplicados dados de inventário de produção processo no segundo servidor para cada intArrayCounter
Em astrProductionArray
OutPutFile.Close ()
End Sub
O CreateConsolidatedWordReport () subrotina
o CreateConsolidatedWordReport () sub-rotina, mostrado abaixo, cria uma versão do Word do relatório de
síntese consolidada. Para simplificar a criação deste relatório, Molly decidiu que, em vez de recriar o
relatório a partir do zero, ela iria configurar uma Fazer ... Até loop e usá-lo para copiar o conteúdo da versão
de texto do relatório em uma sub-rotina array.This, então, processar a matriz usando um For Each ... Next lacete
e os métodos e as propriedades do modelo de objectos de palavra. Para tornar a versão do Word do
relatório de síntese consolidada mais fácil de ler, Molly modificou o Fonte objeto de Nome, tamanho, e Negrito propriedades
cada vez que o sub-rotina escreveu um cabeçalho do relatório. Ela conseguiu isso através da criação de
uma série de E se declarações que usam o Instr () função para identificar os cabeçalhos como o
For Each ... Next loop de iteração através de cada linha da versão de texto do relatório de síntese
consolidada.
Sub CreatConsolidatedWordReport ()
intWordCounter = 0
FileRef.AtEndOfStream
strRptLine = FileRef.ReadLine ()
intWordCounter = intWordCounter + 1
laço
FileRef.Close ()
objWordDoc.Documents.Add Word ()
objWordDoc.Selection.Font.Name = “Courier”
objWordDoc.Selection.Font.Size = 8
objWordDoc.Selection.Font.Bold = False
'Spin através da matriz, formato e escrever a versão do Word do relatório para cada intWordCounter em
astrWordVersionArray
objWordDoc.Selection.Font.Name = “Arial”
objWordDoc.Selection.Font.Size = 12
objWordDoc.Selection.Font.Bold = True
Fim se
564 projeto 3 CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO
objWordDoc.Selection.Font.Name = “Arial”
objWordDoc.Selection.Font.Size = 10
objWordDoc.Selection.Font.Name = “Arial”
objWordDoc.Selection.Font.Size = 10
objWordDoc.Selection.Font.Name = “Arial”
objWordDoc.Selection.Font.Size = 10
objWordDoc.Selection.Font.Name = “Arial”
objWordDoc.Selection.Font.Size = 10
objWordDoc.Selection.Typetext (intWordCounter)
objWordDoc.Selection.TypeParagraph
objWordDoc.Selection.Font.Name = ‘Courier’
objWordDoc.Selection.Font.Size = 8
objWordDoc.Selection.Font.Bold = False
Próximo
PROCESSAMENTO E CONSOLIDAÇÃO relatório de dados Capítulo 24 565
objWordDoc.ActiveDocument.SaveAs (strConSolRptName)
'Feche o documento
objWordDoc.ActiveDocument.Close ()
'Saia do Word
objWordDoc.Quit ()
End Sub
O NotifyOperationsStaff () subrotina
o NotifyOperationsStaff () sub-rotina, ilustrada a seguir, utiliza o VBScript
Dividido() funções para criar uma matriz contendo os nomes dos membros da equipe de operações selecionados que
devem ser enviados uma mensagem de rede indicando que o relatório de síntese consolidada já está disponível.
UMA For Each ... Next laço é então configurado para girar através da matriz e enviar uma mensagem para cada nome
Sub NotifyOperationsStaff ()
astrNotifyArray Dim
strNtkNotifyList = _
WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ NtkNotifyList”) Se Err <> 0 Then
= 0 End If
566 projeto 3 CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO
Fim se
End Sub
O WriteToEventLog () subrotina
Como é o caso com scripts anteriores, o WriteToEventLog () sub-rotina escreve mensagens informativas no log
de eventos do aplicativo do Windows usando uma string passado para ele como um argumento.
WshShl.LogEvent 4, strMessage
End Sub
O TerminateScript () subrotina
o TerminateScript () sub-rotina, ilustrada a seguir, utiliza o WScript objeto de
Sair() método para terminar a execução do script.
Sub TerminateScript ()
WScript.Quit ()
End Sub
criar uma versão em texto e, possivelmente, uma versão do Word do relatório de síntese consolidada e, em seguida,
'Descrição: Este script lê e processa os relatórios de resumo diários de' Windows 2000 Server onde o sistema
'Seção de inicialização
Option Explicit
Dim strEventLog, strDebug, strSvrList, strArchive, strConsolFolder Dim strRpt1, strRpt2, strConSolRptName,
strRptFormat, strNetworkNotification
astrProductionArray (0)
CreateObject ( “Scripting.FileSystemObject”)
SetDefaultSettings () ()
GetRegistrySettings
568 projeto 3 CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO
IdentifyRptsToProcess ()
CreateConsolidatedTextReport ()
CreatConsolidatedWordReport () End If
NotifyOperationsStaff () End If
TerminateScript ()
'Secção Procedimento
SetDefaultSettings sub ()
strNetworkNotification = “Habilitado”
MsgBox “Configurações do Registro recuperadas:“& vbCrLf & vbCrLf & _ ‘strEventLog’ & vbTab & ‘=’ & vbTab &
strEventLog & vbCrLf & _ ‘strDebug’ & vbTab & vbTab & ‘=’ & vbTab & strDebug & vbCrLf & _ “ strSvrList”&
vbTab & vbTab &‘=’& vbTab & strSvrList & vbCrLf & _‘strArchive’& vbTab &‘=’& vbTab & strArchive & vbCrLf &
_‘strRptFormat’& vbTab &‘=’& vbTab & strRptFormat & vbCrLf & _ “strNetworkNotification” & vbTab & “=” & vbTab
“StrConsolFolder” & vbTab & “=” & vbTab & strConsolFolder, cTitleBarMsg End If
End Sub
GetRegistrySettings sub ()
strEventLog = _
WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ EventLogging”) Se Err <> 0 Then
= 0 End If End If
strDebug = WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ DebugMode”) Se Err <> 0 Then
strSvrList = _
570 projeto 3 CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO
WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ Win2000Svrs”) Se Err <> 0 Then
0 End If End If
strArchive = _
WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ RptArchive”) Se Err <> 0 Then
= 0 End If End If
strRptFormat = _
WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ RptFormat”) Se Err <> 0 Then
= 0 End If End If
strNetworkNotification =
Err.Number = 0 End
If End If
PROCESSAMENTO E CONSOLIDAÇÃO relatório de dados Capítulo 24 571
strConsolFolder = _
WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ ConsolFolder”) Se Err <> 0 Then
0 End If End If
MsgBox “Configurações do Registro recuperadas:“& vbCrLf & vbCrLf & _ ‘strEventLog’ & vbTab & ‘=’ & vbTab &
strEventLog & vbCrLf & _ ‘strDebug’ & vbTab & vbTab & ‘=’ & vbTab & strDebug & vbCrLf & _ “ strSvrList”&
vbTab & vbTab &‘=’& vbTab & strSvrList & vbCrLf & _‘strArchive’& vbTab &‘=’& vbTab & strArchive & vbCrLf &
_‘strRptFormat’& vbTab &‘=’& vbTab & strRptFormat & vbCrLf & _ “strNetworkNotification” & vbTab & “=” & vbTab
“StrConsolFolder” & vbTab & “=” & vbTab & strConsolFolder, cTitleBarMsg End If
End Sub
Sub IdentifyRptsToProcess ()
strFileNameString Dim
“_ConsolSumRpt.txt”
strRpt1 = strArchive & “\” & Esquerda (strSvrList, 8) e “_” e strFileNameString strRpt2 = strArchive & “\” & Right
MsgBox “1º relatório de síntese de processo =“& strRpt1 & vbCrLf & _ “segundo relatório de
End Sub
Dim strSourFile
intArrayCounter = 0
Do Until FileRef.AtEndOfStream
strRptLine = FileRef.ReadLine ()
End If
End If Else
intArrayCounter = intArrayCounter + 1
laço
FileRef.Close ()
Outro
strSourFile)
TerminateScript () End If
End Sub
Sub CreateConsolidatedTextReport ()
Dim intArrayCounter, outputfile, strMessage, strLocator Dim intQtyOne, intQtyTwo, intTotalQty, intSpacing,
OutPutFile.WriteLine
“************************************************* ******************************”
OutPutFile.WriteBlankLines (1)
OutPutFile.WriteLine
“************************************************* ******************************”
OutPutFile.WriteBlankLines (1)
OutPutFile.WriteLine “erros:”
OutPutFile.WriteBlankLines (1)
intArrayCounter Em astrServ0001Array
Próximo
intArrayCounter = 0 strLocator
= “false”
intArrayCounter Em astrServ0002Array
Então
Próximo
OutPutFile.WriteBlankLines (1)
“-----------------------------”
OutPutFile.WriteBlankLines (1)
OutPutFile.WriteBlankLines (1)
576 projeto 3 CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO
OutPutFile.WriteLine “Governo:”
OutPutFile.WriteBlankLines (1)
OutPutFile.WriteBlankLines (1)
intArrayCounter = 0 strLocator
= “false”
intArrayCounter Em astrServ0001Array
Próximo
OutPutFile.WriteBlankLines (1)
PROCESSAMENTO E CONSOLIDAÇÃO relatório de dados Capítulo 24 577
intArrayCounter = 0 strLocator
= “false”
intArrayCounter Em astrServ0002Array
Próximo
OutPutFile.WriteBlankLines (1)
“-----------------------------”
OutPutFile.WriteBlankLines (1)
OutPutFile.WriteBlankLines (1)
intArrayCounter = 0 strLocator
= “false”
intArrayCounter Em astrServ0001Array
Próximo
OutPutFile.WriteBlankLines (1)
intArrayCounter = 0
PROCESSAMENTO E CONSOLIDAÇÃO relatório de dados Capítulo 24 579
strLocator = “false”
intArrayCounter Em astrServ0002Array
Próximo
OutPutFile.WriteBlankLines (1)
“-----------------------------”
OutPutFile.WriteBlankLines (1)
OutPutFile.WriteBlankLines (1)
OutPutFile.WriteBlankLines (1)
intArrayCounter = 0
580 projeto 3 CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO
strLocator = “false”
intCounter2 = 0
'Processar a seção Resumo produção diária para o primeiro servidor para cada intArrayCounter Em
astrServ0001Array
End If
Próximo
intCounter2 = 0
intArrayCounter = 0 strLocator
= “false”
'Processar a seção Resumo produção diária para o primeiro servidor para cada intArrayCounter Em
astrServ0002Array
strMatch = “True”
Mediana (intArrayCounter, 1, 5)
'Extrato qty para ambas as entradas, adicionar esses valores juntos e' escrever uma única
entrada
'Extrato Em armazém valor para ambas as entradas, adicionar esses valores' juntos e
Len (intTotalInStock)
582 projeto 3 CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO
intSpaces = 4 - intSpaces
intTotalQty & Space (intSpacing) & _ Mid (intArrayCounter, 14, 25) e espaço
End If End
If End If End If
Próximo
'não-duplicados dados de inventário de produção processo no segundo servidor para cada intArrayCounter
Em astrProductionArray
OutPutFile.Close ()
End Sub
Sub CreatConsolidatedWordReport ()
intWordCounter = 0
FileRef.AtEndOfStream
strRptLine = FileRef.ReadLine ()
intWordCounter = intWordCounter + 1
laço
FileRef.Close ()
objWordDoc.Documents.Add Word ()
objWordDoc.Selection.Font.Name = “Courier”
objWordDoc.Selection.Font.Size = 8
objWordDoc.Selection.Font.Bold = False
584 projeto 3 CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO
objWordDoc.Selection.Font.Name = “Arial”
objWordDoc.Selection.Font.Size = 12
objWordDoc.Selection.Font.Bold = True
Fim se
objWordDoc.Selection.Font.Name = “Arial”
objWordDoc.Selection.Font.Size = 10
objWordDoc.Selection.Font.Name = “Arial”
objWordDoc.Selection.Font.Size = 10
objWordDoc.Selection.Font.Name = “Arial”
objWordDoc.Selection.Font.Size = 10
objWordDoc.Selection.Font.Name = “Arial”
objWordDoc.Selection.Font.Size = 10
objWordDoc.Selection.Typetext (intWordCounter)
objWordDoc.Selection.TypeParagraph
objWordDoc.Selection.Font.Name = ‘Courier’
objWordDoc.Selection.Font.Size = 8
objWordDoc.Selection.Font.Bold = False
Próximo
objWordDoc.ActiveDocument.SaveAs (strConSolRptName)
'Feche o documento
objWordDoc.ActiveDocument.Close ()
'Saia do Word
objWordDoc.Quit ()
End Sub
Sub NotifyOperationsStaff ()
astrNotifyArray Dim
strNtkNotifyList = _
WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ NtkNotifyList”) Se Err <> 0 Then
End If End If
WshShl.Run “Net Send“& strUserName & ““& ‘Ordem \ Inventory relatório consolidado já está disponível.’
Próximo
End Sub
WshShl.LogEvent 4, strMessage
End Sub
Sub TerminateScript ()
WScript.Quit ()
End Sub
A Figura 24.2 ilustra uma porção da amostra do relatório Palavra criado pelo roteiro. Como você pode ver,
alterando as propriedades da fonte, o relatório foi feito mais fácil de ler.
PROCESSAMENTO E CONSOLIDAÇÃO relatório de dados Capítulo 24 587
resumo
Neste capítulo, você aprendeu a desenvolver um VBScript que processa os relatórios de resumo recolhidas a
partir dos dois servidores Windows 2000 que suportam sistema de ordem / estoque da Intuit. Você também
aprendeu a trabalhar com o modelo de objeto do Word, a fim de desenvolver uma versão do Word do
relatório consolidado. Além disso, você aprendeu a usar o net Send comando para criar um processo de
notificação de rede.
Esta página foi intencionalmente esquerda em branco
Capítulo 25
Gestão de
Arquivo
Eu n Neste capítulo, você irá copiar e modificar o script de gestão de arquivo desenvolvido no capítulo
20, “Manutenção de um Resumo de 30 dias Log Archive,” a fim de desenvolver um novo script que mantém
um arquivo de três meses de relatórios sobre o Windows 2000 Professional localizado no Centro de
Comando de Operações estação de trabalho. Este novo script será então executado mensalmente pelo
script de programação desenvolvida no capítulo 23, “Coleta de Relatórios Resumidos remotos.”
LogFiles pasta, a fim de criar os relatórios consolidados, que são armazenados no ConsolidatedRpts pasta.
Quando o script de gestão de arquivo é executado, ele copia os arquivos armazenados na LogFiles pasta,
quer ao Sr1_SummaryRpts
ou Sr2_SummaryRpts pastas, conforme apropriado. Finalmente, a gestão de arquivos
GESTÃO DE ARQUIVO Capítulo 25 591
pasta de armazenamento temporário para os relatórios copiada do SERV0001 e SERV0002 Lojas relatórios
FIGURA 25.1 Examinando a estrutura de pastas utilizada para gerenciar e armazenar relatórios na estação de trabalho do Windows 2000
Professional
A fim de executar tarefas de gerenciamento de arquivo, Molly vai precisar de trabalhar com o
FileSystemObject objeto de DeleteFile () método novamente. A sintaxe para esse método é fornecida
no Capítulo 20. Além disso, ela terá de aprender a trabalhar com um número de outros métodos
que pertencem ao FileSystemObject. Estes métodos incluem:
Dim FsoObj
Com base nos resultados do teste, um script pode executar qualquer número de ações, incluindo:
◆ Excluindo a pasta
◆ Examinando o conteúdo da pasta
para deixar o script de gerenciamento de arquivo de executar esta tarefa. Para automatizar esta tarefa,
Molly vai precisar usar o FileSystemObject objeto de Criar pasta()
método. A sintaxe deste método é descrito a seguir.
NOTA
Sempre use o FileSystemObject objeto de FolderExists () método para determinar que a pasta ainda não
existir antes de tentar criá-lo. Caso contrário, ocorrerá um erro.
Criação de uma pasta é uma tarefa simples. Primeiro você deve instanciar o
FileSystemObject. Em seguida, você pode verificar para certificar-se de que a pasta ainda não existir
usando o FolderExists () método antes de finalmente usando o Criar pasta() Método, tal como
demonstrado no seguinte exemplo.
Definir strWorkingFolder = _
GORJETA
Você não pode usar o Criar pasta() método para reinicializar uma pasta existente. Se você tentar fazer isso, o
script irá receber um erro. No entanto, você pode usar o DeleteFolder () método para excluir a pasta e, em
seguida, recriá-lo novamente usando o Criar pasta() método.
594 projeto 3 CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO
ObjectReference é uma variável que representa um exemplo do FileSystemObject objeto. Fonte especifica
a localização do arquivo ou arquivos a serem movidos e
Alvo especifica a pasta de destino onde o arquivo ou arquivos serão armazenados.
GORJETA
Como uma alternativa para o FileSystemObject objeto de MoveFile () método, você poderia usar o Arquivo objeto Mover()
método. No entanto, este método só processa um arquivo de cada vez, de modo a fim de usá-lo, você tem que criar
um loop para processar todos os arquivos no LogFiles pasta.
Dim FsoObj
Molly pretende copiar e modificar o script de gestão de arquivo que foi apresentado no Capítulo 20
ao desenvolver o script de gerenciamento de arquivo para a estação de trabalho Windows 2000
Professional. Além disso a já a funcionalidade
GESTÃO DE ARQUIVO Capítulo 25 595
fornecido por esse roteiro, Molly tem a intenção de permitir que o script para suportar as seguintes operações:
A seção de inicialização
o Inicialização Seção, mostrado abaixo, começa com o Option Explicit declaração, a fim de fazer cumprir
nomenclatura de variáveis script de todo o script. Em seguida, ele define variáveis que são usadas globalmente.
Em seguida, ele define uma constante que especifica uma cadeia de texto a ser usado por todas as caixas de
diálogo pop-up exibidos pelo script quando executado no modo de depuração. Finalmente, ele instancia o FileSystemObject
e WshShell objetos.
Option Explicit
CreateObject ( “Scripting.FileSystemObject”)
strVerifyExecutionSchedule = OkToRunToday ()
SetDefaultSettings () GetRegistrySettings () Se
MoveSummaryReports () MonthToDelete ()
RemoveOldReportFiles () Se strEventLog =
“Habilitado” Então
TerminateScript ()
O OkToRunToday () subrotina
o OkToRunToday () sub-rotina, ilustrada a seguir, utiliza o VBScript Dia() e
Encontro() funções para determinar se o script está sendo executado no primeiro dia do mês. Se for, então o
OkToRunToday função ()
Se
End Function
Se a depuração está habilitado, o valor de OkToRunToday é exibida usando o VBScript MsgBox () função.
Os SetDefaultSettings () subrotina
o SetDefaultSettings () sub-rotina, mostrada abaixo, define as definições de configuração padrão para o script
para que ele possa continuar a executar no caso em que ela experimenta um problema ao recuperar suas
configurações de seus valores de Registro associados. Se a depuração está habilitado, o valor de cada
variável modificada por esta sub-rotina é exibido em uma caixa de diálogo pop-up.
SetDefaultSettings sub ()
MsgBox “As configurações padrão inicializado:“& vbCrLf & vbCrLf & _ ‘strEventLog’ & vbTab & ‘=’ & vbTab &
strEventLog & vbCrLf & _ ‘strDebug’ & vbTab & vbTab & ‘=’ & vbTab & strDebug & vbCrLf & _ “ strSvrList”&
vbTab & vbTab &‘=’& vbTab & strSvrList & vbCrLf & _‘strArchive’& vbTab &‘=’& vbTab & strArchive & vbCrLf &
_“strSvr1Folder “& vbTab &‘=’& vbTab & strSvr1Folder & vbCrLf & _ “strSvr2Folder” & vbTab & “=” & vbTab &
strSvr2Folder & vbCrLf & _ “strConsolFolder” & vbTab & “=” & vbTab & strConsolFolder, cTitleBarMsg End If
End Sub
Os GetRegistrySettings () subrotina
o GetRegistrySettings () sub-rotina, mostrado abaixo, começa especificando o On Error Resume Next declaração.
Isto irá assegurar que a execução deste script não é interrompida em caso de um problema ao
recuperar valores do Registro. Como cada valor de registo são lidos utilizando o WshShell objeto de RegRead
() método, o valor da Errar propriedade padrão do objeto ( Err.Number) é verificado para determinar se
ocorreu um erro. Se ocorreu um erro, uma mensagem é gravada no log de eventos do aplicativo
Windows e o valor de Err.Number é reposto a zero.
GetRegistrySettings sub ()
strEventLog = _
WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ EventLogging”) Se Err <> 0 Then
= 0 End If End If
strSvrList = _
WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ Win2000Svrs”) Se Err <> 0 Then
0 End If End If
strArchive = _
WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ RptArchive”) Se Err <> 0 Then
= 0 End If End If
strSvr1Folder = _
WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ Svr1Folder”) Se Err <> 0 Then
0 End If End If
600 projeto 3 CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO
strSvr2Folder = _
WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ Svr2Folder”) Se Err <> 0 Then
0 End If End If
strConsolFolder = _
“WshShl.RegRead (‘HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ ConsolFolder’) Se Err <> 0 Then
0 End If End If
MsgBox “Configurações do Registro recuperadas:“& vbCrLf & vbCrLf & _ ‘strEventLog’ & vbTab & ‘=’ & vbTab &
strEventLog & vbCrLf & _ ‘strDebug’ & vbTab & vbTab & ‘=’ & vbTab & strDebug & vbCrLf & _ “ strSvrList”&
vbTab & vbTab &‘=’& vbTab & strSvrList & vbCrLf & _‘strArchive’& vbTab &‘=’& vbTab & strArchive & vbCrLf &
_“strSvr1Folder “& vbTab &‘=’& vbTab & strSvr1Folder & vbCrLf & _ “strSvr2Folder” & vbTab & “=” & vbTab &
strSvr2Folder & vbCrLf & _ “strConsolFolder” & vbTab & “=” & vbTab & strConsolFolder, cTitleBarMsg End If
End Sub
Os MoveSummaryReports () subrotina
o MoveSummaryReports () sub-rotina, mostrado abaixo, é responsável por mover os relatórios
resumidos coletados dos servidores Windows 2000 (armazenado no
LogFiles encenar pasta na estação de trabalho do Windows 2000 Professional) para o
GESTÃO DE ARQUIVO Capítulo 25 601
localizada do On Error Resume Next declaração, a fim de evitar um erro durante uma das duas operações de
movimentação do script de terminar a execução do script. Se a depuração estiver ativada, uma caixa de diálogo
pop-up irá exibir o nome de cada relatório de síntese, uma vez que está sendo processado.
MoveSummaryReports sub ()
strArchive & “\” & Esquerda (strSvrList, 8) e “*. *” & vbCrLf & _ strArchive & “\” & Right
TerminateScript () Else
strSvr1Folder
strSvr2Folder End
If
End Sub
Em seguida, o FileSystemObject objeto de FolderExists () método é usado para verificar que o LogFiles
pasta de teste está acessível. Se não for, o TerminateScript () sub-rotina é chamado para parar a
execução do script. Caso contrário, o script usa o FolderCreate () método para criar o Sr1_SummaryRpts
e
602 projeto 3 CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO
Sr2_SummaryRpts pastas de arquivo se eles não existem (por exemplo, se o script está sendo executado
pela primeira vez). finalmente, o FileSystemObject objeto de MoveFile () método é usado para mover os
relatórios de resumo para o arquivo adequado folder.The Esquerda() e Certo() funções são usadas para
analisar o nome do servidor embutido no strSvrList variável para que a sub-rotina vai saber a que pasta de
arquivo para mover os relatórios de síntese.
O MonthToDelete () subrotina
o MonthToDelete () sub-rotina, mostrado abaixo, é responsável por determinar qual mês valor de
resumo e arquivos de relatório consolidado deve ser excluído. Ele começa definindo três
variáveis. 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 a partir de quatro strCurrentMonth. Se, por
exemplo, a data atual é 01 de junho, em seguida, o valor de
strDeleteMonth será de 1 (5-4 = 1). quatro Se então declarações são então configurado para ajustar o
valor de strDeleteMonth no caso em que o mês atual é ou janeiro, fevereiro, março ou abril. Por
exemplo, se o mês atual é abril, em seguida, 4 menos 4 será igual a zero. Desde 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, ajustes
semelhantes são feitas para os primeiros três meses do ano.
Sub MonthToDelete ()
strCurrentMonth - 4
Se strDeleteMonth = 0 Then
Se strDeleteMonth = -1 Então
Se strDeleteMonth = -2 Então
Se strDeleteMonth = -3 Então
End Sub
Os RemoveOldReportFiles () subrotina
o RemoveOldReportFiles () sub-rotina, mostrado abaixo, é responsável pela exclusão de resumo e relatórios
consolidados mais de três meses de idade. Ela começa com a On Error Resume Next declaração, a fim de
evitar quaisquer erros que ocorrem ao excluir os arquivos de travar a execução do script. Se o modo de
depuração estiver ativada, uma caixa de diálogo pop-up é exibida, mostrando a string que a sub-rotina usará
para identificar quais resumo e relatórios consolidados ele irá apagar. Em seguida, o DeleteFile () método é
usado para excluir os arquivos. Como você pode ver, o string que especifica quais arquivos estão a ser
excluída é um pouco envolvidos. É montado, especificando o nome da pasta de arquivo onde os relatórios
estão armazenados (o Sr1_SummaryRpts ou Sr2_SummaryRpts pastas) e, em seguida, anexando o caractere
de barra invertida (\), seguido do nome dos arquivos a ser excluído.
604 projeto 3 CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO
O nome que indica quais arquivos estão a ser excluída é estabelecido por executando as seguintes etapas:
3. Acrescente o número do mês cujos arquivos serão apagados (conforme especificado pelo strDeleteMonth).
RemoveOldReportFiles sub ()
strSummaryRptPath Dim
strSvr2Folder & “\” & Right (strSvrList, 8) e “_” e strDeleteMonth & _ “* _SumRpt.txt” & vbCrLf & _
“* _ConsolSumRpt.txt”
End Sub
GESTÃO DE ARQUIVO Capítulo 25 605
O WriteToEventLog () subrotina
o WriteToEventLog () sub-rotina, ilustrada a seguir, utiliza o WshShell objeto de
RegistrarEvento () método para escrever uma mensagem informativa, passado para ele como um argumento, no log de
WshShl.LogEvent 4, strMessage
End Sub
O TerminateScript () subrotina
o TerminateScript () sub-rotina, mostrado abaixo, pára a execução do script usando o WScript objeto
de Sair() método.
Sub TerminateScript ()
WScript.Quit ()
End Sub
'Descrição: Este script mantém um arquivo de log de 90 dias de ambos resumo' e relatórios Order_Inventory
consolidadas
'************************************************* ************************
'Seção de inicialização
606 projeto 3 CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO
Option Explicit
CreateObject ( “Scripting.FileSystemObject”)
strVerifyExecutionSchedule = OkToRunToday ()
SetDefaultSettings () GetRegistrySettings () Se
MoveSummaryReports () MonthToDelete ()
RemoveOldReportFiles () Se strEventLog =
“Habilitado” Então
TerminateScript ()
GESTÃO DE ARQUIVO Capítulo 25 607
'Secção Procedimento
OkToRunToday função ()
Se
End Function
SetDefaultSettings sub ()
MsgBox “As configurações padrão inicializado:“& vbCrLf & vbCrLf & _ ‘strEventLog’ & vbTab & ‘=’ & vbTab &
strEventLog & vbCrLf & _ ‘strDebug’ & vbTab & vbTab & ‘=’ & vbTab & strDebug & vbCrLf & _ “ strSvrList”&
vbTab & vbTab &‘=’& vbTab & strSvrList & vbCrLf & _‘strArchive’& vbTab &‘=’& vbTab & strArchive & vbCrLf &
_“strSvr1Folder “& vbTab &‘=’& vbTab & strSvr1Folder & vbCrLf & _ “strSvr2Folder” & vbTab & “=” & vbTab &
strSvr2Folder & vbCrLf & _ “strConsolFolder” & vbTab & “=” & vbTab & strConsolFolder, cTitleBarMsg End If
End Sub
608 projeto 3 CRIAÇÃO DE UMA ESTAÇÃO DE RELATÓRIO DE GESTÃO CENTRALIZADO
GetRegistrySettings sub ()
strEventLog = _
“WshShl.RegRead (‘HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ EventLogging’) Se Err <> 0 Then
= 0 End If End If
strDebug = WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ DebugMode”) Se Err <> 0 Then
strSvrList = _
WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ Win2000Svrs”) Se Err <> 0 Then
0 End If End If
strArchive = _
“WshShl.RegRead (‘HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ RptArchive’) Se Err <> 0 Then
= 0 End If End If
strSvr1Folder = _
WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ Svr1Folder”) Se Err <> 0 Then
0 End If End If
strSvr2Folder = _
WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ Svr2Folder”) Se Err <> 0 Then
0 End If End If
strConsolFolder = _
WshShl.RegRead ( “HKLM \ Software \ Intuit \ VBScripts \ MstSumRpts \ ConsolFolder”) Se Err <> 0 Then
0 End If End If
MsgBox “Configurações do Registro recuperadas:“& vbCrLf & vbCrLf & _ ‘strEventLog’ & vbTab
“StrDebug” & vbTab & vbTab & “=” & vbTab & strDebug & vbCrLf & _ “strSvrList” & vbTab & vbTab & “=” &
vbTab & strSvrList & vbCrLf & _ “strArchive” & vbTab & “=” & vbTab & strArchive & vbCrLf & _ “strSvr1Folder“&
vbTab & ‘=’ & vbTab & strSvr1Folder & vbCrLf & _ ‘strSvr2Folder’ & vbTab & ‘=’ & vbTab & strSvr2Folder &
vbCrLf & _ ‘strConsolFolder’ & vbTab & ‘=’ & vbTab & strConsolFolder, cTitleBarMsg End If
End Sub
MoveSummaryReports sub ()
strArchive & “\” & Esquerda (strSvrList, 8) e “*. *” & vbCrLf & _ strArchive & “\” & Right
TerminateScript () Else
strSvr1Folder
strSvr2Folder End
If
End Sub
GESTÃO DE ARQUIVO Capítulo 25 611
Sub MonthToDelete ()
strCurrentMonth - 4
Se strDeleteMonth = 0 Then
Se strDeleteMonth = -1 Então
Se strDeleteMonth = -2 Então
Se strDeleteMonth = -3 Então
End Sub
RemoveOldReportFiles sub ()
strSummaryRptPath Dim
strSvr2Folder & “\” & Right (strSvrList, 8) e “_” e strDeleteMonth & _ “* _SumRpt.txt” & vbCrLf & _
“* _ConsolSumRpt.txt”
End Sub
WshShl.LogEvent 4, strMessage
End Sub
Sub TerminateScript ()
WScript.Quit ()
End Sub
resumo
Neste capítulo, você aprendeu como criar um script de gestão de arquivos que manteve três arquivos de
relatórios separados, cada qual armazena um mínimo de valor de relatórios de três meses. Além disso,
você observado como Molly acrescentou lógica de depuração para o roteiro e adaptou-a para recuperar
suas configurações do registro do Windows.
PARTE V
Project Professional 4
Esta página foi intencionalmente esquerda em branco
projeto 4
Relatórios de
aplicação Dados de
Resumo via Web