none
Dúvidas Script VBS RRS feed

  • Pergunta

  • Boa tarde

     

    Estou com dúvidas sobre o script abaixo (arquivo .vbs) para ser executado no Windows Server 2008 R2 64x. Solicito auxílio, pois estou começando a pesquisar sobre o assunto.

     

    ----------

    strPasta="E:\Public\Temp"

     

    set FSo = CreateObject("Scripting.FileSystemObject")

     

    Apagar_Arquivos(strPasta)

     

    Sub Apagar_Arquivos(Pasta)

     

     set folder = FSO.getFolder (Pasta)

     

     if folder.Subfolders.count > 0 then

      for each SubFolder in folder.Subfolders

       Apagar_Arquivos SubFolder

      next

     end if

     

     for each file in folder.files

      if (dateDiff("d", file.datecreated, now) >7) then

       File.delete

      end if

     next

     

     if folder.Subfolders.count = 0 and folder.files.count=0 and Folder.Path<>strPasta then

      Folder.delete true

     end if

     

    end sub

    ----------

     

    Dúvidas:

     

    I) O script acima deleta realmente apenas os arquivos e pastas existentes dentro de diretório "E:\Public\Temp" se sua data de criação for maior do que 7 dias?

     

    II) Ao executar o script no windows server 2008 via WindowsPowerShell pelo comando "cscript" ele acusa o erro abaixo. Como proceder uma vez que estou logado com usuário administrador?

    "apaga_temp.vbs(23, 4) Microsoft VBScript runtime error: Permission denied"

     

    Obrigado!

     

    []´s

    • Movido Erick Albuquerque segunda-feira, 2 de maio de 2011 17:38 Fórum Apropriado (De:Windows Server 2008)
    sexta-feira, 29 de abril de 2011 19:12

Respostas

  •  

    Ja tentou clicar com o botão direito no powershell e executar como administrador ?

    Geralmente esse erro esta associado a arquivos somente leitura. Tente retirar esse atributo com codigo e tente novamente.

     

    Ex,

     

    '==============================================================

    if (dateDiff("d", file.datecreated, now) >7) then

     file.attributes = 32
     File.delete strfile

    If CBool(file.Attributes XOr 1) Then


    msgbox file.attributes

     

    file.Attributes = file.Attributes XOr 1 

    objFSO.DeleteFile strfile,true


    else


     End If

     

    '==============================================================

     

    De uma olhada!

    http://www.mixfix.nl/helpfiles/programeren/filesystem.asp

    Att

    Robson Hasselhoff




    • Marcado como Resposta CRodrigo terça-feira, 3 de maio de 2011 11:46
    sexta-feira, 29 de abril de 2011 20:19
  • Ola rodrigo só colocar o file.attributes = 32 segue:

    strPasta="E:\Public\Temp"
    
    
    
     
    
    
    
    set FSo = CreateObject("Scripting.FileSystemObject")
    
    
    
     
    
    
    
    Apagar_Arquivos(strPasta)
    
    
    
     
    
    
    
    Sub Apagar_Arquivos(Pasta)
    
    
    
     
    
    
    
     set folder = FSO.getFolder (Pasta)
    
    
    
     
    
    
    
     if folder.Subfolders.count > 0 then
    
    
    
     for each SubFolder in folder.Subfolders
    
    
    
     Apagar_Arquivos SubFolder
    
    
    
     next
    
    
    
     end if
    
    
    
     
    
    
    
     for each file in folder.files
    
    
    
     if (dateDiff("d", file.datecreated, now) >7) then
    
    
    
    ' A propriedade abaixo remove o atributo somente leitura de todos os objetos file que atende ao criterio da data acima de 7 dias!
    
    File.attributes = 32
    
    
    
    File.delete
    
    
    
     end if
    
    
    
     next
    
    
    
     
    
    
    
     if folder.Subfolders.count = 0 and folder.files.count=0 and Folder.Path<>strPasta then
    
    
    
     Folder.delete true
    
    
    
     end if
    
    
    
     
    
    
    
    end sub
    
    
    
    

    Robson Hasselhoff - Follow me @Robk9e
    • Marcado como Resposta CRodrigo quinta-feira, 5 de maio de 2011 16:15
    terça-feira, 3 de maio de 2011 15:16

Todas as Respostas

  • Olá Rodrigo,

    Dando uma passada por cima assim ele apaga os arquivos com mais de 7 dias.

    Você está executando esse comando de um servidor 2008 para apagar o TEMP local desse server? ou você quer executar remoto em alguma estação?

    Abraços.


    Tiago Souza http://www.portaltecnologia.net
    sexta-feira, 29 de abril de 2011 19:51
  •  

    Ja tentou clicar com o botão direito no powershell e executar como administrador ?

    Geralmente esse erro esta associado a arquivos somente leitura. Tente retirar esse atributo com codigo e tente novamente.

     

    Ex,

     

    '==============================================================

    if (dateDiff("d", file.datecreated, now) >7) then

     file.attributes = 32
     File.delete strfile

    If CBool(file.Attributes XOr 1) Then


    msgbox file.attributes

     

    file.Attributes = file.Attributes XOr 1 

    objFSO.DeleteFile strfile,true


    else


     End If

     

    '==============================================================

     

    De uma olhada!

    http://www.mixfix.nl/helpfiles/programeren/filesystem.asp

    Att

    Robson Hasselhoff




    • Marcado como Resposta CRodrigo terça-feira, 3 de maio de 2011 11:46
    sexta-feira, 29 de abril de 2011 20:19
  • Olá Tiago

     

    Estou executando diretamente no servidor 2008 para apagar os arquivos da pasta "TEMP" conforme data de criação dos mesmos.

     

    []´s

    segunda-feira, 2 de maio de 2011 19:03
  • Boa tarde Robson

     

    Havia tentado iniciar o windows powershell como administrador, porém o problema persiste.

     

    Fiz o teste de retirar via windows o atributo "somente leitura" da pasta "Temp" e aplicar a alteração a sub-pastas e arquivos, porém o erro continua sendo apresentado.

     

    Na dica que você deu para fazer via script esta remoção de atributo, não dei conta do recado (realmente sou leigo no assunto).

     

    []´s

     

    ----------------------- EDIT -----------------------

     

    Robson, acredito que a sua observação sobre arquivos somente leitura resolveu o problema. Além disso, eu estava executando o processo provavelmente com os arquivos em uso =/

     

    Rodando o processo em horário alternativo o script foi executado com sucesso.

     

    Se for possível, me ajude a deixar o script que postei inicialmente com o esquema para remoção do atributo somente leitura de arquivos e pastas.

     

    []´s

    segunda-feira, 2 de maio de 2011 19:07
  • Ola rodrigo só colocar o file.attributes = 32 segue:

    strPasta="E:\Public\Temp"
    
    
    
     
    
    
    
    set FSo = CreateObject("Scripting.FileSystemObject")
    
    
    
     
    
    
    
    Apagar_Arquivos(strPasta)
    
    
    
     
    
    
    
    Sub Apagar_Arquivos(Pasta)
    
    
    
     
    
    
    
     set folder = FSO.getFolder (Pasta)
    
    
    
     
    
    
    
     if folder.Subfolders.count > 0 then
    
    
    
     for each SubFolder in folder.Subfolders
    
    
    
     Apagar_Arquivos SubFolder
    
    
    
     next
    
    
    
     end if
    
    
    
     
    
    
    
     for each file in folder.files
    
    
    
     if (dateDiff("d", file.datecreated, now) >7) then
    
    
    
    ' A propriedade abaixo remove o atributo somente leitura de todos os objetos file que atende ao criterio da data acima de 7 dias!
    
    File.attributes = 32
    
    
    
    File.delete
    
    
    
     end if
    
    
    
     next
    
    
    
     
    
    
    
     if folder.Subfolders.count = 0 and folder.files.count=0 and Folder.Path<>strPasta then
    
    
    
     Folder.delete true
    
    
    
     end if
    
    
    
     
    
    
    
    end sub
    
    
    
    

    Robson Hasselhoff - Follow me @Robk9e
    • Marcado como Resposta CRodrigo quinta-feira, 5 de maio de 2011 16:15
    terça-feira, 3 de maio de 2011 15:16
  • É um prazer ajuda-lo, qualquer duvida so voltar a posta!
    Robson Hasselhoff - Follow me @Robk9e
    quinta-feira, 5 de maio de 2011 16:16
  • Deu tudo certo.

     

    Obrigado a todos pela ajuda!

     

    []´s

     

    Carlos Rodrigo

    quinta-feira, 5 de maio de 2011 16:17