Usuário com melhor resposta
Apagar arquivos temporários.

Pergunta
-
Uso este script para deletar alguns arquivos temporários na minha empresa, só que ele apresenta um pequeno problema se um arquivo que ele verificar estiver em uso ele para de executar dando erro, caso contrário se todos os arquivos estiverem liberados ele executa com perfeição. Alguém sabe como contornar esse problema??? Segue o script abaixo.
strPasta="Z:\"
set FSo = CreateObject("Scripting.FileSystemObject")
Apagar_Arquivos(strPasta)
Sub Apagar_Arquivos(Pasta)
set folder = FSO.getFolder (Pasta)
if folder.Subfolders.count > 0 thenfor each SubFolder in folder.SubfoldersApagar_Arquivos SubFoldernextend if
for each file in folder.filesset objFile = FSO.GetFile(file)if FSO.GetExtensionName(objFile) = "sfk" or FSO.GetExtensionName(objFile) = "tmp" thenFile.deleteend ifnext
end sub
Respostas
-
Pessoa consegui resolver adicionando a seguinte linha no código On Error Resume Next, abaixo esta o script prontinho
strPasta="Z:\"
set FSo = CreateObject("Scripting.FileSystemObject")
Apagar_Arquivos(strPasta)
On Error Resume Next
Sub Apagar_Arquivos(Pasta)
set folder = FSO.getFolder (Pasta)
if folder.Subfolders.count > 0 thenfor each SubFolder in folder.SubfoldersApagar_Arquivos SubFoldernextend if
for each file in folder.filesset objFile = FSO.GetFile(file)if FSO.GetExtensionName(objFile) = "sfk" or FSO.GetExtensionName(objFile) = "tmp" thenFile.deleteend ifnext
end sub- Marcado como Resposta Lucas N P Machado domingo, 18 de março de 2012 00:00
Todas as Respostas
-
Tente usar esse script
On Error Resume Next
Set wshShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim strProgFiles, strWinDir
strWinDir = WshShell.ExpandEnvironmentStrings("%WinDir%")
strProgFiles = WshShell.ExpandEnvironmentStrings("%ProgramFiles%")
'************* Manutenção de Arquivos
Const OverwriteExisting = True
'**** Geral '
objFSO.DeleteFile ("C:\Documents and Settings\"&objNetwork.UserName&"\Configurações locais\Temp\*.*"),True
objFSO.DeleteFolder ("C:\Documents and Settings\"&objNetwork.UserName&"\Configurações locais\Temp\*"),True
Thomas Edson Mattos Roeder -
-
Se você tiver o PowerShell na sua máquina, use o comando abaixo:
dir *.tmp -Recurse | del -force
[]s,
Vinicius
Vinicius Canto MVP Admin Frameworks Blog: http://viniciuscanto.blogspot.com -
Lucas,
Utilizo o script abaixo para deletar arquivos .ini e .exe da pasta C:\TEMP e das configurações locais do perfil do usuário, veja se te ajuda...
On Error resume Next
strComputer = "."
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(USER_PROFILE)
Set objFolderItem = objFolder.Self
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Const USER_PROFILE = &H28&
objConflocal = "\Config~1\Temp\"'Pastas que serão verificadas
strPasta1 = objFSO.GetFolder(objFolderitem.path & objConflocal)
strPasta2 = objFSO.GetFolder("C:\Temp\")'Extensões, separados por ";"
arrTipos = "ini;exe"arrTipos = split(arrTipos,";")
Set colFiles = objWMIService.ExecQuery _
("ASSOCIATORS OF {Win32_Directory.Name='" &strPasta1& "'} Where " _
& "ResultClass = CIM_DataFile")Set FilesTemp = objWMIService.ExecQuery _
("ASSOCIATORS OF {Win32_Directory.Name='" &strPasta2& "'} Where " _
& "ResultClass = CIM_DataFile")'Limpando strPasta1
For Each objFile in colFiles
For Each tipo in arrTipos
If objFile.Extension = tipo Then
objFile.Delete
End If
Next
Next'Limpando strPasta2
For Each objFile in FilesTemp
For Each tipo in arrTipos
If objFile.Extension = tipo Then
objFile.Delete
End If
Next
NextBoa sorte!!!
-
Lucas,
Utilizo o script abaixo para deletar arquivos .ini e .exe da pasta C:\TEMP e das configurações locais do perfil do usuário, veja se te ajuda...
On Error resume Next
strComputer = "."
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(USER_PROFILE)
Set objFolderItem = objFolder.Self
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Const USER_PROFILE = &H28&
objConflocal = "\Config~1\Temp\"'Pastas que serão verificadas
strPasta1 = objFSO.GetFolder(objFolderitem.path & objConflocal)
strPasta2 = objFSO.GetFolder("C:\Temp\")'Extensões, separados por ";"
arrTipos = "ini;exe"arrTipos = split(arrTipos,";")
Set colFiles = objWMIService.ExecQuery _
("ASSOCIATORS OF {Win32_Directory.Name='" &strPasta1& "'} Where " _
& "ResultClass = CIM_DataFile")Set FilesTemp = objWMIService.ExecQuery _
("ASSOCIATORS OF {Win32_Directory.Name='" &strPasta2& "'} Where " _
& "ResultClass = CIM_DataFile")'Limpando strPasta1
For Each objFile in colFiles
For Each tipo in arrTipos
If objFile.Extension = tipo Then
objFile.Delete
End If
Next
Next'Limpando strPasta2
For Each objFile in FilesTemp
For Each tipo in arrTipos
If objFile.Extension = tipo Then
objFile.Delete
End If
Next
NextBoa sorte!!!
Marcos funcionou, apagou com o arquivo temporário aberto, o único problema é que ele não faz uma varredura nas sub-pastas se alguém conseguir fazer este mesmo script fazer uma varredura nas sub-pastas e apagar os arquivos ficaria completo.
Vlw
-
Pessoa consegui resolver adicionando a seguinte linha no código On Error Resume Next, abaixo esta o script prontinho
strPasta="Z:\"
set FSo = CreateObject("Scripting.FileSystemObject")
Apagar_Arquivos(strPasta)
On Error Resume Next
Sub Apagar_Arquivos(Pasta)
set folder = FSO.getFolder (Pasta)
if folder.Subfolders.count > 0 thenfor each SubFolder in folder.SubfoldersApagar_Arquivos SubFoldernextend if
for each file in folder.filesset objFile = FSO.GetFile(file)if FSO.GetExtensionName(objFile) = "sfk" or FSO.GetExtensionName(objFile) = "tmp" thenFile.deleteend ifnext
end sub- Marcado como Resposta Lucas N P Machado domingo, 18 de março de 2012 00:00