none
Script para copiar arquivo de diretorio local para uma unidade mapeada RRS feed

  • Pergunta

  • Boa Tarde,

    Estou procurando um script para copiar um arquivo local (c:\backup) para uma unidade mapeada na rede (\\servidor\dados), onde estes arquivos que são gerados tem a data do dia/mes/ano. Gostaria que este Script nova somente o ultimo backup (do dia) para a unidade mapeada.

    Obrigado

    Lucas

    quarta-feira, 18 de agosto de 2010 16:33

Respostas

  • Lucas,

    O script abaixo move o arquivo mais recente que esta dentro da $PastaOrigem para $PastaDestino

    O script está desenvolvido em PowerShell

    $PastaOrigem = "C:\Temp"
    $PastaDestino = "C:\Temp2"
    
    $Arquivos = (Get-ChildItem $PastaOrigem)
    
    $UltimaData = (Get-Date).addyears(-100)
    $UltimoArquivo = ""
    
    foreach ($Arquivo in $Arquivos)
     {
      
      if($Arquivo.LastWriteTime -gt $UltimaData)
      {
       $UltimoArquivo = $Arquivo.FullName
       $UltimaData = $Arquivo.LastWriteTime
      }
     }
    
    echo "O ultimo arquivo gravado no diretorio $PastaOrigem foi o $UltimoArquivo em $UltimaData"
    
    
    #Mover o Arquivo
    if ($UltimoArquivo -ne ""){Move-Item $UltimoArquivo $PastaDestino}
    

     

     

    Fontes: http://technet.microsoft.com/en-us/library/ee176988.aspx


    Fábio de Paula Junior

    • Marcado como Resposta Anonymo quarta-feira, 18 de agosto de 2010 20:16
    quarta-feira, 18 de agosto de 2010 18:17
    Moderador
  •  

    O mesmo que o anterior só que em VBScript.

    strPastaOrigem = "C:\Temp"
    strPastaDestino = "C:\Temp2"
    
    
    
    
    Set fso = CreateObject("Scripting.FileSystemObject") 
    
    
    Set Pasta = fso.GetFolder(strPastaOrigem)
    Set Arquivos = Pasta.Files
    
    dtUltimaData = DateAdd("y",-100,now)
    strUltimoArquivo = ""
    
    
    For each Arquivo In Arquivos
     if Arquivo.DateLastModified >= dtUltimaData then
     strUltimoArquivo = Arquivo.Name
     dtUltimaData = Arquivo.DateLastModified 
    
     end if
    next
    
    wscript.echo "O ultimo arquivo gravado no diretorio " & strPastaOrigem & _
       " foi o " & strUltimoArquivo & " em " & dtUltimaData
    
    
    wscript.echo strPastaOrigem & "\" & strUltimoArquivo
    
    'Mover o Arquivo
    if strUltimoArquivo <> "" then fso.moveFile strPastaOrigem & "\" & strUltimoArquivo , strPastaDestino & "\"
    
    


    'Referencia(s): http://msdn.microsoft.com/en-us/library/2z9ffy99(VS.85).aspx

     


    Fábio de Paula Junior
    • Marcado como Resposta Anonymo quarta-feira, 18 de agosto de 2010 20:16
    quarta-feira, 18 de agosto de 2010 18:54
    Moderador

Todas as Respostas

  • Lucas,

    O script abaixo move o arquivo mais recente que esta dentro da $PastaOrigem para $PastaDestino

    O script está desenvolvido em PowerShell

    $PastaOrigem = "C:\Temp"
    $PastaDestino = "C:\Temp2"
    
    $Arquivos = (Get-ChildItem $PastaOrigem)
    
    $UltimaData = (Get-Date).addyears(-100)
    $UltimoArquivo = ""
    
    foreach ($Arquivo in $Arquivos)
     {
      
      if($Arquivo.LastWriteTime -gt $UltimaData)
      {
       $UltimoArquivo = $Arquivo.FullName
       $UltimaData = $Arquivo.LastWriteTime
      }
     }
    
    echo "O ultimo arquivo gravado no diretorio $PastaOrigem foi o $UltimoArquivo em $UltimaData"
    
    
    #Mover o Arquivo
    if ($UltimoArquivo -ne ""){Move-Item $UltimoArquivo $PastaDestino}
    

     

     

    Fontes: http://technet.microsoft.com/en-us/library/ee176988.aspx


    Fábio de Paula Junior

    • Marcado como Resposta Anonymo quarta-feira, 18 de agosto de 2010 20:16
    quarta-feira, 18 de agosto de 2010 18:17
    Moderador
  •  

    O mesmo que o anterior só que em VBScript.

    strPastaOrigem = "C:\Temp"
    strPastaDestino = "C:\Temp2"
    
    
    
    
    Set fso = CreateObject("Scripting.FileSystemObject") 
    
    
    Set Pasta = fso.GetFolder(strPastaOrigem)
    Set Arquivos = Pasta.Files
    
    dtUltimaData = DateAdd("y",-100,now)
    strUltimoArquivo = ""
    
    
    For each Arquivo In Arquivos
     if Arquivo.DateLastModified >= dtUltimaData then
     strUltimoArquivo = Arquivo.Name
     dtUltimaData = Arquivo.DateLastModified 
    
     end if
    next
    
    wscript.echo "O ultimo arquivo gravado no diretorio " & strPastaOrigem & _
       " foi o " & strUltimoArquivo & " em " & dtUltimaData
    
    
    wscript.echo strPastaOrigem & "\" & strUltimoArquivo
    
    'Mover o Arquivo
    if strUltimoArquivo <> "" then fso.moveFile strPastaOrigem & "\" & strUltimoArquivo , strPastaDestino & "\"
    
    


    'Referencia(s): http://msdn.microsoft.com/en-us/library/2z9ffy99(VS.85).aspx

     


    Fábio de Paula Junior
    • Marcado como Resposta Anonymo quarta-feira, 18 de agosto de 2010 20:16
    quarta-feira, 18 de agosto de 2010 18:54
    Moderador
  • Fábio,

    Muito obrigado deu certo pelo Power Shell!!!

     

    Porem quando adicionei ele em uma tarefa agendada do Windows ele não executo e abriu em formato de bloco de notas.... o formato correto é .ps1 para executar direto ?

    Abraço

    quarta-feira, 18 de agosto de 2010 20:03
  • 1. Crie um .bat com o comando abaixo:

    2. powershell -command C:\seuscript.ps1

    3. Agend o .bat que vc criou.


    Fábio de Paula Junior

    quarta-feira, 18 de agosto de 2010 20:37
    Moderador
  • Fábio,

    Primeiro obrigado pela ajuda!

    Voce pode me ajuda com essa... agendei .bat um bkp do system state no Windows Server 2008 pelo comando:

    wbadmin start systemstatebackup -backupTarget:B: -quiet

    Porem ele esta adicionando os backup, gostaria de sobrescrever ou deletar o ultimo e fazer novamente para ter sempre o ultimo bkp.

    Qual comando poderia esta adicionando em meu script para realizar este procedimento ?

    Abraço

    quinta-feira, 19 de agosto de 2010 10:53
  • Lucas,

    Ontem teve esta mesma dúvida no fórum, o parametro que você deve utilizar é o keepVersions onde vc indica quantas versões vc quer manter.

    WBADMIN DELETE SYSTEMSTATEBACKUP -keepVersions:2 -quiet

     

    http://social.technet.microsoft.com/Forums/pt-BR/scriptadminpt/thread/8faf6c3b-552e-457b-b40c-1f809b896b47


    Fábio de Paula Junior
    quinta-feira, 19 de agosto de 2010 12:10
    Moderador
  • Fábio,

    Como eu preciso apenas copiar, alterei o "Move-Item" para "Copy-Item".

    Porém o arquivo não foi copiado. Existe algum parâmetro diferente dos que constam na sintaxe que eu deva considerar?


    segunda-feira, 19 de agosto de 2019 13:40