Usuário com melhor resposta
Script para compactação diária

Pergunta
-
Olá,
Estou com um pequeno problema aqui. Estou precisando de um script que pegue e compacte os arquivos criados no dia anterior ao atual, o problema é que o nome dos arquivos são sequenciais (71234, 71235, 71236, ...). Minha dificuldade está em conseguir pegar a data dos arquivos e verificar se são realmente do dia anterior.
Eu estava tentando fazer isso usando um .bat, pois, possuo um script que realiza esta tarefa, porém para arquivos onde o nome é uma data.
Obrigado!
Respostas
-
Alexandre ,
O Script abaixo lista os arquivos com uma determinada data ou mais antigo ...
Faça algumas modificação para poder usar na sua compactação.
dim numeroCont,numeroTamanho,nomeComputador,textoNew
nomeComputador = "."
numeroCont = 0
numeroTamanho = 0
Const ForAppending = 8
set objetoFSO = CreateObject("Scripting.FileSystemObject")
systime = Now()
textoNew = "check.txt"
set objetoSF = objetoFSO.OpenTextFile (textoNew, ForAppending, True)
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & nomeComputador & "\root\cimv2")
Set colFiles = objWMIService.ExecQuery("SELECT * FROM CIM_DataFile where Drive ='e:' and lastmodified<'20070101'")
for each objFile in colFiles
Set objetoSF2 = objetoFSO.GetFile (objFile.name)
numeroCont = numeroCont +1
numeroTamanho = numeroTamanho + cdbl(round(objfile.filesize/1024))
ArquivoInfo = "Arquivo: " & objfile.name & vbCrLf & "Tamanho :" & cdbl(round(objfile.filesize/1024)) & "Kb" & vbCrLf & "Date last modified:" & objetoSF2.DateLastModified & vbCrLf
objetoSf.writeline ArquivoInfo
Next
objetoSF.writeline ":: Imprime totais ::"
objetoSF.writeline "Arquivos: " & numeroCont
objetoSF.writeline "Tamanho: " & numeroTamanho & "Kb"
objetoSF.writeline ":: Terminou ::"
objetoSF.close
O script está funcionando corretamente agora.
Não esqueça de alterar a linha :
Set colFiles = objWMIService.ExecQuery("SELECT * FROM CIM_DataFile where Drive ='e:' and lastmodified<'20070101'")
Não deixe de classificar a ou as mensagens como "respondido”, caso tenha ajudado.
Fazendo isso, você estará ajudando outros usuários do Fórum a identificar qual ou quais foram as soluções aplicadas na correção do problema.
Luiz Espínola
MCTS - Windows 2008 Active Directory
MCTS - Windows 2008 Applications Infrastructure
MCTS - Windows 2008 Network Infrastructure
MCSE +Security, MCT, MCDBA, Comptia Security+IBM CSex, ITIL Foundation, Novell CNA, SCSA Solaris 9, Citrix CCA
-
Olá,
outra alternativa é usar o Windows PowerShell pra isso. Fica consideravelmente mais fácil e simples.
http://www.google.com.br/search?hl=pt-BR&client=firefox-a&rls=org.mozilla:en-USfficial&hs=5Q4&q=+site:viniciuscanto.blogspot.com+vinicius+canto+powershell+arquivos+antigos
[]s,
--
Vinicius Canto
MVP Windows Server - Admin Frameworks
MCP Windows 2000 Server, Windows XP e SQL Server 2000
Bacharelando em Ciências da Computação - USP
Blog sobre Scripting e Windows Powershell: http://viniciuscanto.blogspot.com
Todas as Respostas
-
Alexandre ,
O Script abaixo lista os arquivos com uma determinada data ou mais antigo ...
Faça algumas modificação para poder usar na sua compactação.
dim numeroCont,numeroTamanho,nomeComputador,textoNew
nomeComputador = "."
numeroCont = 0
numeroTamanho = 0
Const ForAppending = 8
set objetoFSO = CreateObject("Scripting.FileSystemObject")
systime = Now()
textoNew = "check.txt"
set objetoSF = objetoFSO.OpenTextFile (textoNew, ForAppending, True)
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & nomeComputador & "\root\cimv2")
Set colFiles = objWMIService.ExecQuery("SELECT * FROM CIM_DataFile where Drive ='e:' and lastmodified<'20070101'")
for each objFile in colFiles
Set objetoSF2 = objetoFSO.GetFile (objFile.name)
numeroCont = numeroCont +1
numeroTamanho = numeroTamanho + cdbl(round(objfile.filesize/1024))
ArquivoInfo = "Arquivo: " & objfile.name & vbCrLf & "Tamanho :" & cdbl(round(objfile.filesize/1024)) & "Kb" & vbCrLf & "Date last modified:" & objetoSF2.DateLastModified & vbCrLf
objetoSf.writeline ArquivoInfo
Next
objetoSF.writeline ":: Imprime totais ::"
objetoSF.writeline "Arquivos: " & numeroCont
objetoSF.writeline "Tamanho: " & numeroTamanho & "Kb"
objetoSF.writeline ":: Terminou ::"
objetoSF.close
O script está funcionando corretamente agora.
Não esqueça de alterar a linha :
Set colFiles = objWMIService.ExecQuery("SELECT * FROM CIM_DataFile where Drive ='e:' and lastmodified<'20070101'")
Não deixe de classificar a ou as mensagens como "respondido”, caso tenha ajudado.
Fazendo isso, você estará ajudando outros usuários do Fórum a identificar qual ou quais foram as soluções aplicadas na correção do problema.
Luiz Espínola
MCTS - Windows 2008 Active Directory
MCTS - Windows 2008 Applications Infrastructure
MCTS - Windows 2008 Network Infrastructure
MCSE +Security, MCT, MCDBA, Comptia Security+IBM CSex, ITIL Foundation, Novell CNA, SCSA Solaris 9, Citrix CCA
-
Olá,
outra alternativa é usar o Windows PowerShell pra isso. Fica consideravelmente mais fácil e simples.
http://www.google.com.br/search?hl=pt-BR&client=firefox-a&rls=org.mozilla:en-USfficial&hs=5Q4&q=+site:viniciuscanto.blogspot.com+vinicius+canto+powershell+arquivos+antigos
[]s,
--
Vinicius Canto
MVP Windows Server - Admin Frameworks
MCP Windows 2000 Server, Windows XP e SQL Server 2000
Bacharelando em Ciências da Computação - USP
Blog sobre Scripting e Windows Powershell: http://viniciuscanto.blogspot.com -
Olá Luiz!
Estou precisando de uma ajudinha....
Teria como você me ajudar a criar um script no windows para eu compactar uns arquivos que são gerados diariamente?
Na verdade gostaria de criar um que compactasse todos os arquivos sempre do mês anterior, no caso, a cada ultimo dia dia do mês a 00:01 ele grava o mês todo.
Tem como criar isso?
Muito obriado amigo!!!
Luiz Henrique.