Usuário com melhor resposta
Script procura e apaga arquivos no servidor

Pergunta
-
Olá,
pessoal alguem pode me ajudar num script que procura arquivos no servidor e que apague os mesmos?
Os computadores mac quando copiam no servidor tambem acrescentam um arquivo .DS_Store.
Esse script deverá buscar esses aqruivos e apagá-los
Obrigado
Ivo
Respostas
-
Olá,
Tente o script abaixo:
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
'caminho para busca dos arquivos
strPasta="C:\"
set FSo = CreateObject("Scripting.FileSystemObject")
Apagar_Arquivos(strPasta)
Sub Apagar_Arquivos(Pasta)
set folder = FSO.getFolder (Pasta)
ChecaExtensao Folder
if folder.Subfolders.count > 0 then
for each SubFolder in folder.Subfolders
ChecaExtensao subfolder
Apagar_Arquivos SubFolder
next
end if
end sub
Function ChecaExtensao(strPasta)
'Coloque aqui os tipos de arquivos que serão copiados ou deletados, separados por ";"
arrTipos = "DS_Store;jpg;mp3"
arrTipos = split(arrTipos,";")
Set colFiles = objWMIService.ExecQuery _
("ASSOCIATORS OF {Win32_Directory.Name='" &strPasta& "'} Where " _
& "ResultClass = CIM_DataFile")
For Each objFile in colFiles
For Each tipo in arrTipos
If objFile.Extension = tipo Then
objFile.Delete
End If
Next
Next
End Function
Se você tiver um compartilhamento (Exemplo: c:\arquivos), com certeza deve ter...
Coloque o caminho... É melhor que deixar no c:\ como o meu exemplo... Pois irá demorar muito para procurar em todas as pastas do computador.
Poste os resultados.
Até mais,
Jesiel
Obs.: Se útil, classifique- Marcado como Resposta Fábio JrModerator quinta-feira, 13 de setembro de 2012 02:12
Todas as Respostas
-
Olá,
Dá uma olhada no script abaixo, veja se te atende:
'Code Snippet
'SCRIPT RETIRADO DO SITE: http://forums.microsoft.com/TechNet-BR/ShowPost.aspx?PostID=3899835&SiteID=29
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
'Coloque aqui a pasta que será verificada
strPasta = "C:\teste"
'Coloque aqui os tipos de arquivos que serão copiados ou deletados, separados por ";"
arrTipos = "DS_Store;jpg;mp3"
arrTipos = split(arrTipos,";")
Set colFiles = objWMIService.ExecQuery _
("ASSOCIATORS OF {Win32_Directory.Name='" &strPasta& "'} Where " _
& "ResultClass = CIM_DataFile")
For Each objFile in colFiles
For Each tipo in arrTipos
If objFile.Extension = tipo Then
objFile.Delete
End If
Next
Next
Faça os testes e nos retorne.
Até mais,
Jesiel
Obs.: Se útil, classifique -
-
Olá,
Tente o script abaixo:
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
'caminho para busca dos arquivos
strPasta="C:\"
set FSo = CreateObject("Scripting.FileSystemObject")
Apagar_Arquivos(strPasta)
Sub Apagar_Arquivos(Pasta)
set folder = FSO.getFolder (Pasta)
ChecaExtensao Folder
if folder.Subfolders.count > 0 then
for each SubFolder in folder.Subfolders
ChecaExtensao subfolder
Apagar_Arquivos SubFolder
next
end if
end sub
Function ChecaExtensao(strPasta)
'Coloque aqui os tipos de arquivos que serão copiados ou deletados, separados por ";"
arrTipos = "DS_Store;jpg;mp3"
arrTipos = split(arrTipos,";")
Set colFiles = objWMIService.ExecQuery _
("ASSOCIATORS OF {Win32_Directory.Name='" &strPasta& "'} Where " _
& "ResultClass = CIM_DataFile")
For Each objFile in colFiles
For Each tipo in arrTipos
If objFile.Extension = tipo Then
objFile.Delete
End If
Next
Next
End Function
Se você tiver um compartilhamento (Exemplo: c:\arquivos), com certeza deve ter...
Coloque o caminho... É melhor que deixar no c:\ como o meu exemplo... Pois irá demorar muito para procurar em todas as pastas do computador.
Poste os resultados.
Até mais,
Jesiel
Obs.: Se útil, classifique- Marcado como Resposta Fábio JrModerator quinta-feira, 13 de setembro de 2012 02:12
-
-
-
-
-
-
Boa tarde Jesiel,
fiz o teste como administrador no servidor e continuou dando o mesmo erro.
Testei outro script e funcionou, mas em cada arquivo que apaga ele solicita um ok.
São muitos arquivos e fiquei 15 minutos dando ok.
Pode me ajudar neste script?
segue abaixo:
Set FSO = CreateObject("Scripting.FileSystemObject")
DIM FolderLFolderL = "f:\"
ShowSubfolders FSO.GetFolder(FolderL)
Sub ShowSubFolders(Folder)
For Each Subfolder in Folder.SubFolders
Set folder = FSO.GetFolder(Subfolder.Path)
For Each File in Folder.Files
If File.Name = ".DS_Store" then
wscript.echo "Arquivo: " & File & ", " & File.DateLastModified
FSO.DeleteFile File, True
End if
Next
ShowSubFolders Subfolder
Next
End Sub
Obrigado
Ivo -
Olá,
Ele está aparecendo a mensagem pois tem a linha wscript.echo...
Basta você remover esta linha... Ou colocar um apostrofe (') no inicio.
Com o script que te passei se você adicionar a linha On error resume next, também era pra funcionar.
Poste os resultados.
Até mais,
Jesiel
Obs.: Se útil, classifique