Usuário com melhor resposta
Script para apagar somente arquivos e subpastas

Pergunta
-
Prezados
Tenho o script abaixo, utilizo (agendamento) para apagar arquivos e pastas de uma unidade de rede. Gostaria de uma ajuda, para modificar o script, adicionando estes recursos:
1 - se o arquivo estiver aberto por algum usuario, o script nao seja interrompido, continua apagando outros arquivos e subpastas;
2 - gostaria que este script deletasse arquivos e subpastas, mas nao a pasta raiz;
Se nao for pedir muito, peço que mostre quais os trechos que foram modificados no script original.
Obrigado!
Set objNetwork = CreateObject("Wscript.Network") strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set objFSO = CreateObject("Scripting.FileSystemObject") 'Coloque aqui a pasta que será verificada strPasta = "D:\PROJETO\Transf" ' NOME DO ARQUIVO DE LOG strLogFile = "log_transf.txt" 'pastas que serao mantidas arrpastas = "Relatorios,Suporte,RM" arrPastas = Split(arrPastas,",") Set objLogFile = objFSO.OpenTextFile(strLogFile, 8, True, 0) objLogFile.WriteLine VBCRLF objLogFile.WriteLine "===================================================" objLogFile.WriteLine "ARQUIVOS DELETADOS EM: " & now objLogFile.WriteLine "===================================================" ChecaArquivo strPasta GeraLog(strPasta) 'wscript.echo "FIM DO SCRIPT" wscript.quit Sub ChecaArquivo(strSubPasta) Set Folder = ObjFSO.GetFolder(strSubPasta) For each subFolder in Folder.SubFolders GeraLog SubFolder.Path ChecaArquivo SubFolder.path lDeleta = FALSE for y = 0 to UBOUND(arrPastas) if instr(SubFolder.name,arrPastas(y)) > 0 Then 'wscript.echo subFolder.name lDeleta = TRUE End if Next if lDeleta = FALSE Then objLogFile.WriteLine "PASTA DELETADA : " & subFolder.path & " deletado em : " & Now objFSO.deletefolder(SubFolder.Path) End if Next End sub '==================================================================== Sub GeraLog(strCaminho) Set objArq = ObjFSO.GetFolder(strCaminho) Set MyFiles = objArq.files 'wscript.echo strCaminho.name For Each MyFiles in objArq.Files strFileOrig = Myfiles.path objLogFile.WriteLine "ARQUIVO DELETADO : " & myfiles.path & " deletado em : " & Now objFSO.deletefile Myfiles.path Next End sub
Sou Livre !
- Editado Fábio JrModerator quarta-feira, 27 de fevereiro de 2013 03:21 Formatação do código
Respostas
-
1 - se o arquivo estiver aberto por algum usuario, o script nao seja interrompido, continua apagando outros arquivos e subpastas;
Utilize o on error resume next, assim se ocorrer o erro o script vai seguir em diante
2 - gostaria que este script deletasse arquivos e subpastas, mas nao a pasta raiz;
No local onde é deletada a pasta coloque um "IF" antes para verificar se a pasta que ele vai tentar apagar naquele momento é diferente de strPasta (sua pasta raiz).
Tente modificar, se não der certo poste o código modificado e o qual o comportamento q o novo código apresentou.
Fábio de Paula Junior
- Sugerido como Resposta Fábio JrModerator terça-feira, 12 de março de 2013 15:24
- Marcado como Resposta Fábio JrModerator segunda-feira, 18 de março de 2013 19:21
Todas as Respostas
-
1 - se o arquivo estiver aberto por algum usuario, o script nao seja interrompido, continua apagando outros arquivos e subpastas;
Utilize o on error resume next, assim se ocorrer o erro o script vai seguir em diante
2 - gostaria que este script deletasse arquivos e subpastas, mas nao a pasta raiz;
No local onde é deletada a pasta coloque um "IF" antes para verificar se a pasta que ele vai tentar apagar naquele momento é diferente de strPasta (sua pasta raiz).
Tente modificar, se não der certo poste o código modificado e o qual o comportamento q o novo código apresentou.
Fábio de Paula Junior
- Sugerido como Resposta Fábio JrModerator terça-feira, 12 de março de 2013 15:24
- Marcado como Resposta Fábio JrModerator segunda-feira, 18 de março de 2013 19:21
-
Fabio, obrigado pela ajuda.
Coloquei o ON ERROR RESUME NEXT, fiz um teste, aparentemente o script continuou apagando.
A pasta raiz nao é apagada (strPasta).
Por exemplo:
Pasta1, pasta2, pasta3
Gostaria que o script entrasse em cada pasta e apagasse o conteudo, mas nao as pastas. Assim, a estrutura de pastas continua intacta.
Sou Livre !
-
-
A dica continua a mesma
No local onde é deletada a pasta coloque um "IF" antes para verificar se a pasta que ele vai tentar apagar naquele momento é diferente de strPasta (sua pasta raiz).
Mas já que são várias talvez precise de mais "IF"s.
Fábio de Paula Junior