|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Скрипт для удаления старых файлов и папок из определенной папки |
|
VBS/WSH/JS - [решено] Скрипт для удаления старых файлов и папок из определенной папки
|
Новый участник Сообщения: 5 |
Профиль | Отправить PM | Цитировать Здравствуйте! Помогите пожалуйсто создать скрипт для удаления старых файлов и папок старше n - дней из определенной папки.
Нашел такой скрипт который удаляет старые файлы из корневого каталога, а как переделать его так что б он удалял все папки и файлы старше n - дней незнаю. Если кто то сможет помочь заранее огромное спаибо !!!!!!!!!!! Пример скрипта: RunForFiles "C:\Test\" 'файлы, среди которых будет производиться поиск устаревших, лежат в этой директории Function RunForFiles(folderspec) Dim fso, f, f1, fc Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.GetFolder(folderspec) Set fc = f.Files For Each f1 in fc WScript.Echo (folderspec & f1.name) 'вывод сообщения с именем файла, который будет удален. используется в тестовых целях, в рабочем скрипте нужно отключить If CompareDate(folderspec & f1.name) = True Then Log(folderspec & f1.name) 'DelFile(folderspec & f1.name) 'удалить файл. сейчас удаление отключено для отладки. Next End Function '*************************************************************** 'Возвращает True, если дата создания файла больше 14-ти дней Function CompareDate(strFileName) Dim fso, f, s, i Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.GetFile(strFileName) i = DateDiff("d", f.DateCreated, Now) If i > 14 Then 'здесь указывается количество дней, которое используется для сравнения с датой создания файла, т.е., в этом примере удаляются все файлы, созданные раньше, чем 14 дней назад 'WScript.Echo(strFileName&" "&i) 'вывести имя файла и его возраст, используется для отладки CompareDate = True Else CompareDate = False End If End Function '**************************************************************** 'функция для извлечения пути Function ExpandPath(strFullFileName) ExpandPath = Left(strFullFileName,instrrev(strFullFileName,"\")) End Function '*************************************************************** Function DelFile(strFullFileName) Dim fso, F Set fso = CreateObject("Scripting.FileSystemObject") Set F = fso.GetFile(strFullFileName) F.Delete End Function '**************************************************************** 'функция для создания log-файла. он создается рядом со скриптом, имя - дата запуска скрипта. Function Log(strLineToLog) Const ForReading = 1, ForWriting = 2 Dim fso, f, r, FileLog r = "" FileLog = Left(WScript.ScriptName,(Len(WScript.ScriptName)-4)) & "_" & DatePart("yyyy",Date) & "_" & DatePart("m",Date) & "_" & DatePart("d",Date) & "." & "log" Set fso = CreateObject("Scripting.FileSystemObject") If (fso.FileExists(FileLog)) Then Set f = fso.OpenTextFile(FileLog, Forreading, True) r = f.Readall f.Close Set f = fso.OpenTextFile(FileLog, ForWriting, True) f.Write strLineToLog & vbCrLf & r f.Close Else Set f = fso.OpenTextFile(FileLog, ForWriting, True) f.Write strLineToLog f.Close End If End Function |
|
Отправлено: 13:39, 25-07-2009 |
Пользователь Сообщения: 72
|
Профиль | Сайт | Отправить PM | Цитировать Вот готовое решение, которое у меня выполняется через MS SMS 2003 для очистки каталогов временных папок на компьютерах пользователей.
Переменной, отвечающей за время устаревания файла является PurgeTime. В данный момент удаляются все файлы, которые старше 14 дней. '==== Script Information Header ==== 'script name: Purge Temp 'version: 1.0 'date: 16.07.08 'autor: Bochkarev Vitaly 'description: Скрипт удаляет устаревшие временные файлы с компьютера. '==== Script Main Logic ==== on error resume next const PurgeTime = 14 'days 'Exceptions - folders, which will not be processed dim aExceptions(3) aExceptions(0) = "Default User" aExceptions(1) = "LocalService" aExceptions(2) = "NetworkService" aExceptions(3) = "All Users" set oFSO = CreateObject("Scripting.Filesystemobject") set oShell = createobject("wscript.shell") 'Set paths sProgramFiles = oShell.ExpandEnvironmentStrings("%ProgramFiles%") sWinDir = oShell.ExpandEnvironmentStrings("%WinDir%") sWinTempFolder = sWinDir & "\Temp" sDocuments = "C:\Documents and Settings" 'Create log-file sLogFileName = sWinTempFolder & "\PurgeTemp_" & Date sLogFileName = Replace(sLogFileName, ".", "_") sLogFileName = Replace(sLogFileName, "/", "_") set oLogFile = oFSO.CreateTextFile(sLogFileName & ".log",true) oLogFile.WriteLine "========== Start purging ==========" 'Purge Windows Temporary folder oLogFile.WriteLine vbCrLf & "========== Windows Temporary folder ==========" PurgeFolder(sWinTempFolder) 'Purge Users Temporary folder and Users Temporary Internet Files oLogFile.WriteLine vbCrLf & "========== Users Temporary folder and Users Temporary Internet Files ==========" set oDocuments = oFSO.GetFolder(sDocuments) set colProfiles = oDocuments.SubFolders for each oProfile in colProfiles bFlag = false for each sException in aExceptions if InStr(oProfile.Path,sException) > 0 then bFlag = true exit for end if next if bFlag = false then PurgeFolder(oProfile.Path & "\Local Settings\Temp") PurgeFolder(oProfile.Path & "\Local Settings\Temporary Internet Files") end if next 'Purge NOD32 Quarantine oLogFile.WriteLine vbCrLf & "========== NOD32 Quarantine ==========" sQuarantine = sProgramFiles & "\Eset\Infected" PurgeFolder(sQuarantine) 'Close log-file oLogFile.WriteLine vbCrLf & "========== Stop purging ==========" oLogFile.Close 'PurgeFolder procedure sub PurgeFolder(sFolderPath) set oFolder = oFSO.GetFolder(sFolderPath) set colFiles = oFolder.Files for each oFile in colFiles if (Date-oFile.DateLastModified) > PurgeTime and (Date-oFile.DateCreated) > PurgeTime then oLogFile.Writeline oFile.Path & vbTab & oFile.DateCreated oFSO.DeleteFile oFile.Path, true if err.Number <> 0 then oLogFile.Writeline "-----> Error # " & CStr(Err.Number) & " " & Err.Description err.clear end if wscript.sleep 20 end if next set colSubFolders = oFolder.SubFolders for each oSubFolder in colSubFolders PurgeFolder(oSubFolder.Path) if oSubFolder.Size = 0 then oLogFile.Writeline oSubFolder.Path & vbTab & oSubFolder.DateCreated oFSO.DeleteFolder oSubFolder.path if err.Number <> 0 then oLogFile.Writeline "-----> Error # " & CStr(Err.Number) & " " & Err.Description err.clear end if end if next end sub |
------- Отправлено: 12:59, 18-08-2009 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать Данный скрипт удаляет только файлы, а пустые папки остаются?
|
Отправлено: 18:21, 18-08-2009 | #22 |
Пользователь Сообщения: 72
|
Профиль | Сайт | Отправить PM | Цитировать avfiga, он удаляет и старые файлы и папки, если они пустые.
if oSubFolder.Size = 0 then oFSO.DeleteFolder oSubFolder.path |
------- Отправлено: 20:28, 18-08-2009 | #23 |
Старожил Сообщения: 285
|
Профиль | Отправить PM | Цитировать Может не в тему, но всёже отпишу, искал способ удалить файлы в папке которые старше X дней, и наткнулся на утилитку forfiles.exe входящию в набор Recourse kit, с помощью её можно легко добится этих целей. К примеру
Цитата:
|
|
Отправлено: 15:22, 04-09-2009 | #24 |
Новый участник Сообщения: 2
|
Профиль | Отправить PM | Цитировать как добавить задание forfiles.exe в планировщик? не получается...
|
Последний раз редактировалось go it alone, 28-01-2010 в 17:39. Отправлено: 17:27, 28-01-2010 | #25 |
Пользователь Сообщения: 117
|
Профиль | Сайт | Отправить PM | Цитировать Цитата go it alone:
|
|
------- Отправлено: 07:06, 02-03-2010 | #26 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Здравствуйте, скажите а можно ли переделать этот код так что бы он удалял только скрытые файлы и перед каждым удалением спрашивал удалить файл или нет?
дата создания файла не важна. |
Отправлено: 10:21, 16-07-2010 | #27 |
Пользователь Сообщения: 140
|
Профиль | Отправить PM | Цитировать POOLEET,
StrSource ="F:\[ Coding ]\del_hidden" ' проверяемая директория Set FSO = CreateObject("Scripting.FileSystemObject") For Each file in FSO.GetFolder(StrSource).Files IF File.Attributes and 2 Then PSH = MsgBox ("Вы действительно хотите удалить" _ & " файл" & Vbcrlf & FSO.GetFileName(File), 4+32, _ "Удаление скрытых файлов") IF PSH = 6 Then: File.Delete: End IF Else: count = count+1: End If Next For Each SubFolder In FSO.GetFolder(StrSource).SubFolders IF SubFolder.Attributes and 2 Then PSH = MsgBox ("Вы действительно хотите удалить" _ & " папку" & Vbcrlf & SubFolder.Name, 4+32, _ "Удаление скрытых файлов") IF PSH = 6 Then: SubFolder.Delete: End IF Else: count = count+1: End If Next IF count > 0 Then MsgBox "Папка не содержит скрытых элементов", 0+64, _ "Удаление скрытых файлов" End If Wscript.Quit (0) Вариант сценария на языке Jscript расположен в разделе: Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Javascript Удаление скрытых файлов » post #2 ________________________________________________________________________ |
Последний раз редактировалось deepred, 20-07-2010 в 20:05. Причина: Добавлена ссылка на Jscript Отправлено: 00:40, 17-07-2010 | #28 |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать Цитата vitaliyboch:
User variables System variables я их меняю, а в скрипте прописаны конкретные пути к этим папкам, т.е. скрипт на изменение User variables и System variables не смотрит... В крайнем случае, как можно указать конкретную папку, к примеру E:\Temp |
|
Отправлено: 14:10, 06-06-2011 | #29 |
Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать |
Отправлено: 09:48, 15-02-2012 | #30 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Помогите найти скрипт для удаленного удаления програм | magwolf | Скриптовые языки администрирования Windows | 20 | 01-02-2016 23:35 | |
Любой язык - нужен скрипт для удаления всех файлов кроме нужных для запуска Windows XP | Dark Ange1 | Скриптовые языки администрирования Windows | 11 | 07-03-2010 13:34 | |
[решено] Скрипт для удаления нужных слов в ini файле | Pozia | AutoIt | 23 | 27-10-2009 18:42 | |
CMD/BAT - [решено] Создание CMD/BAT файла для удаления лишних папок | Vsirf | Скриптовые языки администрирования Windows | 4 | 04-06-2009 20:37 | |
Скрипт для удаления директорий | dallas | Программирование и базы данных | 5 | 15-01-2003 19:28 |
|