|
Компьютерный форум 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 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
|
Отправлено: 09:02, 17-05-2013 | #61 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 19
|
Профиль | Отправить PM | Цитировать Здравствуйте, можете мне кто нито помочь? Ситуация такая, нужен скрипт или программка которая будет удалять вложенные папки с файлами из рабочей директории. То есть имеется сервер на котором делается бэкап, (e:/backup) в этой директории создается папка с датой создания>туда копируется дамп базы, и после этого он в ней архивируется в rar архив. Но есть одно но, иногда дамп снимается с ошибками и он не архивируется или недоорхивируется, нужно что бы скрипт проверял перед удалением папки, что бы всегда в директории оставалась последний актуальный бэкап. (По хорошему завершению бэкапа, в папке с датой остается один файл Export.rar, если что то не так в папке много файлов).
|
Отправлено: 10:28, 26-09-2013 | #62 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать artem_cher, хорошо бы изложить то же самое, но по-русски.
|
Отправлено: 12:47, 26-09-2013 | #63 |
Пользователь Сообщения: 85
|
Профиль | Отправить PM | Цитировать Добрый день!
Подниму старую тему)! Необходимо для этой части кода intDays = Int(Wscript.arguments.Item(0)) strFldr = Wscript.arguments.Item(1) Set objFSO = CreateObject("Scripting.FileSystemObject") Set objDIR = objFSO.GetFolder(strFldr) Set objCol = objDIR.Files For Each objItem In objCol If DateDiff("d", objItem.DateLastModified, Now) > intDays Then objItem.Delete Next Спасибо! |
Отправлено: 16:28, 18-11-2015 | #64 |
Пользователь Сообщения: 85
|
Профиль | Отправить PM | Цитировать Цитата zhuk09:
Сам скрипт выглядит так intDays = 1 strFldr = "D:\Work" Set objFSO = CreateObject("Scripting.FileSystemObject") DelOld strFldr, intDays Function DelOld(sFldr, iDays) On Error Resume Next Dim oD, cF, cD, oI Set oD = objFSO.GetFolder(sFldr) Set cF = oD.Files Set cD = oD.SubFolders For Each oI In cF If DateDiff("d", oI.DateLastModified, Now) > iDays Then oI.Delete Next For Each oI In cD DelOld oI.Path, iDays Next End Function |
|
Отправлено: 14:36, 23-11-2015 | #65 |
Новый участник Сообщения: 1
|
Профиль | Отправить PM | Цитировать Добрый день, нужен скрипт или программа, ну или другое решение для следующей ситуации: IP камера записывает видеофайлы и файлы log в расшаренную папку на одном из компов в сети, данные файлы записываются в папку имеющую название в виде даты, в ней создаются папки с названием равным текущем времени, в данные папки соответственно записываются видеозаписи и файлы лог. Требуется, чтобы раз в 3-4 дня удалялась самая старая папка (места на диске мало и когда оно кончается, видео перестает писаться). Также, хотелось бы, чтобы из общей папки, где создаются все эти файлы и папки удалялись файлы *.log (эти файлы создаются, когда камера фиксирует движение и их достаточно много).
Может ли кто помочь в решении данного вопроса? |
Отправлено: 13:06, 10-05-2016 | #66 |
Новый участник Сообщения: 2
|
Профиль | Отправить PM | Цитировать Подскажите, пожалуйста можно ли автоматизировать вот это действие:
Windows7, в которой 20 пользователей, раз в неделю нужно на каждой из них почистить папки - C:\Users\userNNN\AppData\Local\Temp для каждого пользователя(имя пользователей в формате user_NNN) |
Отправлено: 23:36, 07-06-2016 | #67 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Dimu4, можно.
|
Отправлено: 23:55, 07-06-2016 | #68 |
Новый участник Сообщения: 2
|
Профиль | Отправить PM | Цитировать У меня была вот такая мысль - создать cmd файл, в нем
Вместо %temp% написать путь к каждой папке которую надо почистить и создать сценарий как тут - https://www.youtube.com/watch?v=-l24UCfQ7Cg который будет при выходе из системы или перезагрузке чистить папки пользователей.
Может есть еще подсказки/идеи? Спасибо |
Последний раз редактировалось Dimu4, 08-06-2016 в 00:49. Отправлено: 00:23, 08-06-2016 | #69 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Например, назначьте групповой политикой на Logout пользователям:
Скрытый текст
Option Explicit Const TemporaryFolder = 2 Const intDays2Live = 30 Dim strPathToClear With WScript.CreateObject("Scripting.FileSystemObject") strPathToClear = .GetSpecialFolder(TemporaryFolder) If .FolderExists(strPathToClear) Then ClearSubFolders .GetFolder(strPathToClear) Else WScript.Quit 1 End If End With WScript.Quit 0 '============================================================================= '============================================================================= Sub ClearSubFolders(objFolder) Dim objSubFolder Dim objFile For Each objSubFolder In objFolder.SubFolders ClearSubFolders objSubFolder Next For Each objFile In objFolder.Files If DateDiff("d", objFile.DateLastModified, Now()) > intDays2Live Then objFile.Delete True End If Next If (objFolder.Files.Count = 0) And (objFolder.SubFolders.Count = 0) Then If objFolder.Path = strPathToClear Then ' Nothing to do Else objFolder.Delete True End If End If End Sub '============================================================================= |
Отправлено: 10:58, 08-06-2016 | #70 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|