none
Backup via VBScript lendo caminho por um arquivo TXT RRS feed

  • Pergunta

  • Prezados, Bom Dia,

       Estou precisando fazer uma rotina de backup, sendo que, o script deve ler de um arquivo de texto o diretório das pastas que deverão estar no processo de backup.

    eu já consigo ler o txt, abrir e ler as linhas, porém, não consegui usar o conteúdo de dentro do .txt para definir o destino e a origem do backup, segue abaixo como está o andamento do  meu script, se alguem puder me ajudar, fico grato.

    'Calcular Espaço do HD
    Set ObjetoWMI = GetObject("winmgmts:")
    set discoD = ObjetoWMI.get("win32_logicalDisk.deviceID='D:'")
    Espacolivre =  discoD.freespace
    
    'Variavel Data
    data = day(date) & "-" & month(date) & "-" & Year(date)
    
    'Ler Arquivos
    Const conForReading = 1 
    'Declare Variáveis 
    Dim objFSO, objOrg, objDes 
    'Configurar Objetos 
    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    Set objOrg = objFSO.OpenTextFile("D:\Backup\Origem.txt", 1, False) 
    Set objDes = objFSO.OpenTextFile("D:\Backup\Destino.txt", 1, False)
    
    'Ler Arquivos de Texto
    do while not objOrg.atendofstream
    
    	origem = objOrg.Readline 
    	destino = objDes.Readline
    	
    	'Definindo Pasta
    	Set Pasta_Org = objFSO.GetFolder (origem)
    	Set Pasta_Des = objFSO.GetFolder (destino)
    	'Imprimir Caminho na Tela
    	wscript.echo Pasta_Org
    	wscript.echo Pasta_Des
    
    	For Each Arquivo In Pasta_Org.Files
    		If not objFSO.GetExtensionName (Arquivo) = "exe" Then
    			total = total + Arquivo.size
    		End If
    	Next
    
    	'Criação LOG
    	Set arqSaida = objFSO.CreateTextFile("D:\Log\Log_" & data & ".txt", true)
    
    	If total < Espacolivre Then
    		For Each Arquivo In Pasta_Org
    			If not objFile.GetExtensionName(Arquivo) = "exe" then
    				objFSO.copyFolder (Pasta_Org) + arquivo.Name, (Pasta_Des) + arquivo.Name
    				arqSaida.WriteLine(arquivo.Name & " - " & arquivo.size)
    			End if
    		Next 
    	End If
    	
    loop
    



    domingo, 14 de abril de 2013 09:10

Respostas

  • Amigo faça a seguinte alteração no seu .vbs, que deverá resolver seu problema.

    ....

    If total < Espacolivre Then
       For Each Arquivo In Pasta_Org.Files
         If not objFSO.GetExtensionName(Arquivo) = "exe" then
            objFSO.CopyFolder Pasta_Org, Pasta_Des, true
            arqSaida.WriteLine(arquivo.Name & " - " & arquivo.size)
         End if
       Next 
    End If

    ...

    Att.

    Carlos E.


    sexta-feira, 26 de abril de 2013 14:56

Todas as Respostas

  • Sadraque,

    Poste também um exemplo dos seus arquivos origem e destino. 

    Pelo que entendi a primeira linha do origem deve ser salvo na pasta que esta na primeira linha do destino.txt, a segunda linha do origem.txt salvo na pasta da segunda linha do destino.txt, certo????

    Está dando algum erro na execução?

    De cara vi este erro, na linha:

    If not objFile.GetExtensionName(Arquivo) = "exe" then

    troque por

    If not objFSO.GetExtensionName(Arquivo) = "exe" then

    Não existia o objFile declarado\instanciado.


    Fábio de Paula Junior

    domingo, 14 de abril de 2013 13:02
    Moderador
  • Fábio, obrigado, não me atentei no erro, porém, a dificuldade mesmo é no problema que citei acima, por exemplo.

    eu tenho um arquivo com o nome Origem.TXT, dentro dele tem o caminho: C:\Windows

    e tenho também o arquivo Destino.TXT que dentro dele tem o caminho: D:\Backup

    eu preciso fazer com que o script leia esses conteúdos que estão dentro do arquivo de texto e use esses caminhos como Origem e Destino do backup.

    domingo, 14 de abril de 2013 13:52
  • Sandraque,

    Seu script já faz isso, os dados estão nas váriaveis origem e destino e depois estas váriaveis são utilizadas para abrir o objeto Folder(GetFolder).

    Execute seu script em um prompt de comando utilizando o cscript caminho do script, e envie um print da tela, sem isso fica dificil ajudar.

    Exemplo:

    cscript c:\temp\seuscript.vbs


    Fábio de Paula Junior

    terça-feira, 23 de abril de 2013 13:04
    Moderador
  • Amigo faça a seguinte alteração no seu .vbs, que deverá resolver seu problema.

    ....

    If total < Espacolivre Then
       For Each Arquivo In Pasta_Org.Files
         If not objFSO.GetExtensionName(Arquivo) = "exe" then
            objFSO.CopyFolder Pasta_Org, Pasta_Des, true
            arqSaida.WriteLine(arquivo.Name & " - " & arquivo.size)
         End if
       Next 
    End If

    ...

    Att.

    Carlos E.


    sexta-feira, 26 de abril de 2013 14:56