Jump to content
Fórum Script Brasil
  • 0

SCRIPT para deletar pastas antigas


Nelson Cruz

Question

Pessoal tenho um problema cronico aqui na minha empresa, como temos muitos funcionários e não temos lugar fixo, ficamos com os micros lotados de perfis. Isso faz os micros ficarem lentos na hora de logar.

Por isso resolvi fazer uma script para excluir as pastas com os perfis que já não são modificados a algum tempo, porem não estou conseguindo fazer o script apagar pasta, ele só está apagando arquivos.

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objFSO = CreateObject("Scripting.FileSystemObject")

'Diretorio onde vamos apagar
strPasta = "C:\vários"
'Tipo de arquivo
arrTipos = "doc"
'Ultima modificação
strData = 60


arrTipos = split(arrTipos,";")
If (objFSO.FolderExists(strPasta) = True) Then
   Set Folder = ObjFSO.GetFolder(strPasta)
   Set MyFiles = Folder.files   
      For Each tipo in arrTipos
         For Each MyFiles in Folder.Files
            If Right(myfiles.name,3) = tipo And DateDiff("d",myfiles.DateLastModified,now) > strData Then
               objFSO.Deletefile(strPasta & "\" & myfiles.name)
            End If
         Next
      Next
End if


wscript.quit

Edited by kuroi
Adicionar tag CODE
Link to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 0

Olá...

Só de passagem ;)... já passei por isso e tentei via script MS-DOS...mas a solução é o FSO mesmo...

Bem, utilizando suas variáveis (já que você tem o caminho setado em uma variavel), basta fazer assim:

objFSO.DeleteFolder strPasta, True

Acho que basta colocar onde está a linha: "objFSO.Deletefile(strPasta & "\" & myfiles.name)"

e retire do ciclo a contagem de arquivos...pois não é preciso...o que tiver na pasta vai embora.

Se não der certo, comenta o erro que foi apresentado. sml13.gif

Link to comment
Share on other sites

  • 0
Olá...

Só de passagem ;)... já passei por isso e tentei via script MS-DOS...mas a solução é o FSO mesmo...

Bem, utilizando suas variáveis (já que você tem o caminho setado em uma variavel), basta fazer assim:

objFSO.DeleteFolder strPasta, True

Acho que basta colocar onde está a linha: "objFSO.Deletefile(strPasta & "\" & myfiles.name)"

e retire do ciclo a contagem de arquivos...pois não é preciso...o que tiver na pasta vai embora.

Se não der certo, comenta o erro que foi apresentado. sml13.gif

Amigo, não retorno nenhum erro, porem não apagou a pasta.

O que acontece é o seguinte, esse script teria que entrar por exemplo no Documents and Settings e apagar os as pastas com usuarios que já não usar a um certo tempo. esse script funciona para apagar arquivos que não são usados a um tempo. porem esse script tem um outro erro, que se eu colocar ele para apagar doc, e tiver dois aquivos antigos com o nome doc, ele só apaga um. Só que isso não é importantente para mim, já que eu quero excluir a pasta inteira.

Link to comment
Share on other sites

  • 0

Nelson...

Se você não vai precisar "contar" o número de arquivos na pasta, então elimina o código... :ninja:

Vamos ver... :unsure: vamos por parte então... tenta assim:

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objFSO = CreateObject("Scripting.FileSystemObject")

'Diretorio onde vamos apagar
strPasta = "C:\vários"

'Ultima modificação
strData = 60

If (objFSO.FolderExists(strPasta) = True) Then
   Set Folder = ObjFSO.GetFolder(strPasta)
   Set MyFiles = Folder.files     
    If Right(myfiles.name,3) = tipo And DateDiff("d",myfiles.DateLastModified,now) > strData Then
      objFSO.DeleteFolder strPasta, True
    End If   
End if

wscript.quit

Comenta o que deu...

Valeu !

Edited by Danleonhart
Link to comment
Share on other sites

  • 0
Nelson...

Se você não vai precisar "contar" o número de arquivos na pasta, então elimina o código... :ninja:

Vamos ver... :unsure: vamos por parte então... tenta assim:

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objFSO = CreateObject("Scripting.FileSystemObject")

'Diretorio onde vamos apagar
strPasta = "C:\vários"

'Ultima modificação
strData = 60

If (objFSO.FolderExists(strPasta) = True) Then
   Set Folder = ObjFSO.GetFolder(strPasta)
   Set MyFiles = Folder.files     
    If Right(myfiles.name,3) = tipo And DateDiff("d",myfiles.DateLastModified,now) > strData Then
      objFSO.DeleteFolder strPasta, True
    End If   
End if

wscript.quit

Comenta o que deu...

Valeu !

Amigo deu esse erro.

C:\Documents and Settings\Nelson Cruz\deletaantigo.vb script: O objeto não dá suporte para a propriedade ou mét

odo: 'MyFiles.name'

Link to comment
Share on other sites

  • 0

Entendi seu codigo, e mesmo se não tivesse dado erro, ele iria apagar a pasta vários e não as pastas que estáo dentro da pasta varios.

Esse script eu vou usar para apagar os perfis que ficam dentro do documentos and settings, e que eu não sei os nomes das pastas.

Para facilitar todos os perfis começão com a letra P, podemos colocar isso como parametro e mandar ele testar a data das pastas começadas com P e se for antiga o script apaga.

Link to comment
Share on other sites

  • 0

Seguinte...

Eu deixei a parte do script:

Set MyFiles = Folder.files     
    If Right(myfiles.name,3) = tipo And DateDiff("d",myfiles.DateLastModified,now) > strData Then
pois deduzí que é ele que dá a condição de filtrar o que deve e quando ser deletado...pois para excluir a pasta em definitivo (não importando o quanto ou o quê tenha dentro), basta usar a linha:
objFSO.DeleteFolder strPasta, True

então, como não tenho o seu código completo, não tenho como testar...somente chutar ;)

por isso a parte de exclusão que você necessita tá aí...basta só adaptar...que só vai ser possível por você mesmo que tem o código full legal.png

Link to comment
Share on other sites

  • 0
Eu deixei a parte do script:

Set MyFiles = Folder.files     
    If Right(myfiles.name,3) = tipo And DateDiff("d",myfiles.DateLastModified,now) > strData Then[/code]

pois deduzí que é ele que dá a condição de filtrar o que deve e quando ser deletado...

é, mas nessa hora o q devia ser testado era o .DateLastModified da pasta. Folder.Files é um conjunto de objetos Scripting.File e nem possui essa propriedade (cada arquivo dentro dele sim. você poderia checar com o For Each, como no codigo do primeiro post, mas acho q não é isso o objetivo do tópico).

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...