|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Скрипт для удаления старых файлов и папок из определенной папки |
|
|
VBS/WSH/JS - [решено] Скрипт для удаления старых файлов и папок из определенной папки
|
|
Новый участник Сообщения: 5 |
Здравствуйте! Помогите пожалуйсто создать скрипт для удаления старых файлов и папок старше 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 |
|
Пользователь Сообщения: 76
|
Профиль | Отправить PM | Цитировать Цитата vitaliyboch:
ОС win 2003 права Админ, скрипт создаю с расширением vbs , где можно посмотреть лог работы скрипта |
|
|
Отправлено: 11:28, 29-05-2012 | #31 |
|
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата rosalin:
|
|
|
Отправлено: 11:49, 29-05-2012 | #32 |
|
Новый участник Сообщения: 11
|
Профиль | Сайт | Отправить PM | Цитировать Добрый день. А можно в данный скрипт внести изменении чтобы не удалялись пара каталогов с данными из папки?
Точнее, произвожу очистку папки данным скриптом, в папке есть пара папок которые оттуда перенести нельзя,можно ли видоизменить скрипт таким образом,чтобы при срабатывании он их не трогал,заранее спасибо за ответ… |
|
Отправлено: 11:10, 19-10-2012 | #33 |
|
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Денис_Пузатков@vk:
Болванка кода: Select Case objFolder.Name
Case "Папка1", "Папка2", "Папка3"
' Ничего не делать
Case Else
' Здесь обычное поведение для очистки из выбранного Вами скрипта
End Select
Цитата Денис_Пузатков@vk:
|
||
|
Отправлено: 12:30, 19-10-2012 | #34 |
|
Новый участник Сообщения: 11
|
Профиль | Сайт | Отправить PM | Цитировать Прошу прошения что не указал какой именно...Вот этот
On Error Resume Next intDays = Int(Wscript.arguments.Item(0)) strFldr = Wscript.arguments.Item(1) 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 If oI.Size = 0 Then oI.Delete Next End Function если нетрудно,не могли бы вы вставить данный кусок кода в приведенный мной скрипт...спасибо.. |
|
Отправлено: 12:38, 19-10-2012 | #35 |
|
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
|
Отправлено: 13:40, 19-10-2012 | #36 |
|
Новый участник Сообщения: 11
|
Профиль | Сайт | Отправить PM | Цитировать On Error Resume Next
intDays = Int(Wscript.arguments.Item(0)) strFldr = Wscript.arguments.Item(1) 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.DateCreated, Now) > iDays Then WScript.Echo oI.Path oI.Attributes = 0 oI.Delete End If Next For Each oI In cD Select Case objFolder.Name Case "Test" Case Else DelOld oI.Path, iDays If oI.Size = 0 Then oI.Attributes = 0 oI.Delete End If End Select Next End Function Задача следующая из папки надо раз в неделю удалять все файлы,кроме двух определенных папок и того что в них находиться. Запускается скрипт bat файлом со следующим содержанием cscript //Nologo MyCleanUp.VBS 1 D:\test >MyCleanupScript.Log Попробовал в таком виде,из корня каталога файлы удаляются, но папки с файлами находящиеся в том же каталоге нет. Что не так? |
|
Отправлено: 06:51, 20-10-2012 | #37 |
|
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
|
Отправлено: 07:17, 20-10-2012 | #38 |
|
Новый участник Сообщения: 11
|
Профиль | Сайт | Отправить PM | Цитировать Еще раз извиняюсь за глупые вопросы, ибо в данном вопросе плаваю. Test -это название одной из папок как ра.з
|
|
Отправлено: 07:28, 20-10-2012 | #39 |
|
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
|
Отправлено: 08:08, 20-10-2012 | #40 |
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| 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 | |
|