Usuário com melhor resposta
Script para deletar arquivos temporários

Pergunta
-
Boa Tarde,
Preciso executar um script para deletar todos os arquivos e pastas de uma pasta temporária em alguns servidores. O script funcionou normalmente nos testes que fiz, Mas no servidor em questão apresenta erro.
Creio que o erro seja o mesmo que ocorre quando seleciono todos os arquivos da pasta para excluir: "Está sendo usado por outra pessoa ou programa".
Alguem sabe um jeito de fazer o script ignorar esse erro e proceguir com a exclusão das demais pastas ?
ou
Executar alguma outra função no script para qua o erro não ocorra ?
O script que estou usando é o seguinte:
"
t,sRootPathToDelete,objFSO,objFolder,colSubFolders,BtnCode,WshShell2
sRootPathToDelete="G:\ftproot\Temporario"
Set objFSO=CreateObject("Scripting.FileSystemObject")
Set objFolder=objFSO.GetFolder(sRootPathToDelete)
Set colSubfolders=objFolder.subfolders
For Each objSubFolder in colSubFolders
Set fld = objFSO.GetFolder(objSubFolder)
For Each fl In fld.Files
objFSO.deletefile fl.path , True
'DoEvents
Next
objFSO.DeleteFile("G:\ftproot\Temporario\*.*"), True
objFSO.DeleteFile(objSubFolder+"*.*"), True
objFSO.DeleteFolder(objSubFolder.path)"
Alguem pode me ajudar ?
Respostas
-
Nicolleti, desculpa a demora...estava enrolado..vamos la
del /q /f /s %windir%\Temp *.*
Esse comando apaga os arquivos temporarios do sistema.
del /q /f /s C:\Documents and settings\%username%\Config~1\tempor~1
Esse comando apaga os arquivos temporarios do Internet explorer.
del /q /f /s C:\Documents and settings\%username%\Config~1\temp
Esse comando apaga os arquivos temporarios do usuário.
Insira essas três linhas de vermelho em seus scripts que vai ficar bacana !
Ou
Para apagar os arquivos da pasta temp do usuário atual basta digitar
del /q "%temp%"
e pronto. Se colocado com aspas o erro diminue em 100%
quando o windows é instalado são criadas as variaveis de ambientes que são:
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\netin\AppData\Roaming
CommonProgramFiles=C:\Program Files\Common Files
COMPUTERNAME=PCNETIN
ComSpec=C:\Windows\system32\cmd.exe
HOMEDRIVE=C:
HOMEPATH=\Users\netin
LOCALAPPDATA=C:\Users\netin\AppData\Local
OS=Windows_NT
Path=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program Files\Common Files\Roxio Shared\DLLShared\;C:\ResHack;C:\ÿ\BIN;C:\Program Files\Common Files\Roxio Shared\10.0\DLLShared\;C:\Program Files\Common Files\GTK\2.0\bin;C:\Windows\System32\WindowsPowerShell\v1.0\
..
.
.
SystemDrive=C:
SystemRoot=C:\Windows
TEMP=C:\Users\netin\AppData\Local\Temp
TMP=C:\Users\netin\AppData\Local\Temp
USERDOMAIN=PCnetin
USERNAME=netin
USERPROFILE=C:\Users\netin
windir=C:\WindowsPara saber todas as variáveis apra o prompt de comandos e digite Set em seguida tecle ENTER
Todas estas variáveis tem que ser usada entre o simbolo %(porcentagem) Ex: %variavel%
caso você deseje excluir os arquivos da pasta temp do usuário atual
basta digitar: del /q %temp%
lembre-se que com aspas diminue o erro!
Se foi util, vote
- Marcado como Resposta Fábio JrModerator terça-feira, 24 de janeiro de 2012 11:34
Todas as Respostas
-
Amigo,
Esse script creio q pode ajudar..
trPasta="C:\teste"
set FSo = CreateObject("Scripting.FileSystemObject")
Apagar_Arquivos(strPasta)
Sub Apagar_Arquivos(Pasta)
set folder = FSO.getFolder (Pasta)
'Verifica se tem subpastas
if folder.Subfolders.count > 0 then
for each SubFolder in folder.Subfolders
Apagar_Arquivos SubFolder
next
end if
for each file in folder.files
File.delete
next
if folder.Subfolders.count = 0 and folder.files.count=0 and Folder.Path<>strPasta then
Folder.delete true
end ifend sub
--------------------------------------------------------------------------------------------------------------------------Forma mais simples.
Abra um txt e digita:
del /f /s /q C:\Documents and Settings\NOME DO USUARIO\Configurações locais\temp
del /f /s /q C:\Documents and Settings\NOME DO USUARIO\Configurações locais\temporary internet files
del /f /s /q C:\Documents and Settings\NOME DO USUARIO\Cookies
Salve-o como qualquer .bat
e adicione nas tarefas agendadas.
Pronto todo dia na hora agendada esse comando ira apagar as pastas escolhidas.
lembrando:
/q Modo silencioso (nao pergunta se deseja mesmo apagar)
/f Modo force (força o arquivo ser deletado
/s Apaga todas as subpastas dentro da pasta escolhida.
NOME DO USUARIO e o nome do usuario que voces utilizam para logar.------------------------------------------------------------------------------------------------------------------------------------------------------------------
Se for util,vote
-
Olá,
A primeira solução que você enviou deu um erro na linha 11 do script, como ainda sou leigo em questão de script não sei qual poderia ser o problema. A segunda não exclui as pastas, apenas os arquivos, mesmo utilizando o "/s".
Será que estou fazendo algo errado ?
A pasta de testes que criei é c:\temp
o arquivo.bat ficou:
del /f /s /q C:\temp
-
Nicolleti, desculpa a demora...estava enrolado..vamos la
del /q /f /s %windir%\Temp *.*
Esse comando apaga os arquivos temporarios do sistema.
del /q /f /s C:\Documents and settings\%username%\Config~1\tempor~1
Esse comando apaga os arquivos temporarios do Internet explorer.
del /q /f /s C:\Documents and settings\%username%\Config~1\temp
Esse comando apaga os arquivos temporarios do usuário.
Insira essas três linhas de vermelho em seus scripts que vai ficar bacana !
Ou
Para apagar os arquivos da pasta temp do usuário atual basta digitar
del /q "%temp%"
e pronto. Se colocado com aspas o erro diminue em 100%
quando o windows é instalado são criadas as variaveis de ambientes que são:
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\netin\AppData\Roaming
CommonProgramFiles=C:\Program Files\Common Files
COMPUTERNAME=PCNETIN
ComSpec=C:\Windows\system32\cmd.exe
HOMEDRIVE=C:
HOMEPATH=\Users\netin
LOCALAPPDATA=C:\Users\netin\AppData\Local
OS=Windows_NT
Path=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program Files\Common Files\Roxio Shared\DLLShared\;C:\ResHack;C:\ÿ\BIN;C:\Program Files\Common Files\Roxio Shared\10.0\DLLShared\;C:\Program Files\Common Files\GTK\2.0\bin;C:\Windows\System32\WindowsPowerShell\v1.0\
..
.
.
SystemDrive=C:
SystemRoot=C:\Windows
TEMP=C:\Users\netin\AppData\Local\Temp
TMP=C:\Users\netin\AppData\Local\Temp
USERDOMAIN=PCnetin
USERNAME=netin
USERPROFILE=C:\Users\netin
windir=C:\WindowsPara saber todas as variáveis apra o prompt de comandos e digite Set em seguida tecle ENTER
Todas estas variáveis tem que ser usada entre o simbolo %(porcentagem) Ex: %variavel%
caso você deseje excluir os arquivos da pasta temp do usuário atual
basta digitar: del /q %temp%
lembre-se que com aspas diminue o erro!
Se foi util, vote
- Marcado como Resposta Fábio JrModerator terça-feira, 24 de janeiro de 2012 11:34
-
Robson, este comando " del /q /f /s %windir%\Temp *.*" não deleta apenas arquivos temporários do sistema. Ao executar o mesmo e reiniciar a minha maquina eu perdi todos os meus emails da pasta do meu Thunderbird. Sabe me informa alguma maneira de fazer um rollback neste procedimento executado?
- Editado Wesley Lucio Santos terça-feira, 15 de julho de 2014 20:22
-
Olá!
Tente assim:
echo on
cleanmgr.exe /sagerun:n
del /q /f /s %tmp%
***********************************************
@echo *** ***
@echo *** LIMPEZA DE ARQUIVOS TEMPORARIOS FINALIZADA! ***
@echo *** ***
@echo ***********************************************
PAUSE
-
-
Boa noite amigo, não entendo nada disso também. Más estou testando esses comandos para limpeza
Percebi que cada vez que executava o script. bat. ele sumia da área de trabalho, auto se deletava.
Então, fui pondo um a um, quando cheguei nesse aqui: " del /q /f /s %windir%\Temp *.*" ele novamente sumiu da tela. foi removido.
Então, resolvi tirar o ultimo asterisco "*", e ele não se destruiu como antes. acho que resolvi esse problema.
não sei qual a relação de um ou de dois asterisco.
-
Bom dia,
Tenho um problema, uso esse script abaixo para limpar algumas pastas da minha rede.
Se eu especificar qual usuário quero que a pasta seja limpa ele faz perfeitamente (abaixo)
C:\Users\joao.silva\AppData\Local\Temp
Porém se deixo como coringa para apagar de qualquer usuário via gpo não faz nada (abaixo)
C:\Users\%username%\AppData\Local\Temp
Alguma ideia de como posso fazer ele reconhecer?
-----------------------------------------
Option Explicit
Dim Path, FileLog, Arquivo, ArquivoSize
Dim ObjFSO, Folder, MyFiles, MySubFolders, MyFolder
Dim ObjFileRead, ObjFileWrite, ObjFileAppending
Dim NomeFileDeleted, NomeFolderDeleted
Dim ActionDel, i
On error resume next
Path = "C:\Users\joao.silva\AppData\Local\Temp" 'Pasta Raiz onde for desejado apagar os
arquivos e subpastas
'FileLog = "logfile.txt" 'Nome do logfile
ActionDel = "no"
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Set ObjFSO = CreateObject("Scripting.FileSystemObject")
VerifySizeLog FileLog
Set Folder = ObjFSO.GetFolder(Path)
Set MyFiles = Folder.files
Set MySubFolders = Folder.SubFolders
Set ObjFileRead = ObjFSO.opentextfile(FileLog, ForReading, True)
Set ObjFileAppending = ObjFSO.opentextfile(FileLog, ForAppending, True)
'Set ObjFileWrite = ObjFSO.opentextfile(FileLog, ForWriting, True)
If Not ObjFSO.FolderExists(Path) Then
WriteLog Path & " - não é uma pasta válida(A pasta não existe)."
wscript.echo FileLog
WScript.Quit
End If
i=0
IF MyFiles.Count <> 0 Then
For Each MyFiles in Folder.Files
NomeFileDeleted = MyFiles.Name
MyFiles.Delete
if Err.number <> 0 then
WriteLog Err.Description&". !!! Erro ao tentar deletar o arquivo "& Path
&"\"&NomeFileDeleted
Err.Clear
else
WriteLog Path &"\"&NomeFileDeleted &" - Arquivo deletado em "& now()
i=i+1
end if
ActionDel = "yes"
Next
end if
IF MySubFolders.Count <> 0 Then
For each MyFolder in MySubFolders
NomeFolderDeleted = MyFolder.Name
MyFolder.delete
if Err.number <> 0 then
WriteLog Err.Description&". Erro ao tentar deletar a pasta "& Path
&"\"&NomeFolderDeleted
Err.Clear
else
WriteLog Path &"\"&NomeFolderDeleted &" - PASTA deletada em "& now()
i=i+1
end if
ActionDel = "yes"
Next
end if
if ActionDel = "yes" then
WriteLog "----------------------------------------
FIM----------------------------------------------------"
WriteLog "----------------------------TOTAL DE "& i &" OBJETOS
DELETADOS---------------------------------"
end if
Function WriteLog (Text)
ObjFileAppending.WriteLine Text
End Function
Function VerifySizeLog(NameFile)
Set ObjFSO = CreateObject("Scripting.FileSystemObject")
Set ObjFileRead = ObjFSO.opentextfile(NameFile, ForReading, True)
Set Arquivo = ObjFSO.GetFile(NameFile)
ArquivoSize = Arquivo.size
'wscript.echo ArquivoSize
if ArquivoSize >= 1240000 then
ObjFileRead.close
Arquivo.name = "LOG FECHADO EM "& Replace(FormatDateTime(now,2),"/","-")&".txt"
elseif ArquivoSize <= 1000024 then
FileLog = NameFile
end if
End Function -
-
Executei os comandos:
del /q /f /s %windir%\Temp *.*
del /q /f /s C:\Documents and settings\%username%\Config~1\tempor~1
del /q /f /s C:\Documents and settings\%username%\Config~1\temp
e alguns arquivos da minha area de trabalho foram apagados, tem como reverter?
-
-