|
Компьютерный форум 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 |
Новый участник Сообщения: 11
|
Профиль | Сайт | Отправить PM | Цитировать Да остаются.
|
Отправлено: 22:39, 24-10-2012 | #51 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 01:49, 25-10-2012 | #52 |
Новый участник Сообщения: 11
|
Профиль | Сайт | Отправить PM | Цитировать нет не старше....посмотрел внимательней,одна папка пустая есть
|
Отправлено: 10:01, 25-10-2012 | #53 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Денис_Пузатков@vk:
|
|
Отправлено: 23:39, 26-10-2012 | #54 |
Новый участник Сообщения: 1
|
Профиль | Отправить PM | Цитировать У меня непонятка со скриптом. Он должен удалять файлы в сети в папках с русскими именами и с пробелами, но не делает этого, выдает ошибку. Говорят раньше он работал. Писал его не я, да и особо в этом не разбираюсь.
Собственно сам скрипт: 'Производит поиск устаревших файлов и удаляет файлы старше 50 дней set fso=Wscript.CreateObject("Scripting.FileSystemObject") Set Dict = CreateObject("Scripting.Dictionary") Dict.Add "01", "\\vek\cr\Документы\`Сканированые изображения`\Бухгалтерия" Dict.Add "02", "\\vek\cr\Документы\`Сканированые изображения`\Технический отдел" Dict.Add "03", "\\vek\cr\Документы\`Сканированые изображения`\Отдел кадров" Dict.Add "04", "\\vek\cr\Документы\`Сканированые изображения`\Комната ТП" Dict.Add "05", "\\vek\cr\Документы\`Сканированые изображения`\Отдел логистики" Arr = Dict.Items For i=0 To Dict.Count-1 Set fs = CreateObject("ScriptCodingInfo.FileSystem") For Each f1 In fs.WalkFiles(Arr(i)) d = f1.DateLastModified diff = DateDiff("d",d,Now) if diff > 50 Then fso.DeleteFile (Arr(i) & "\" & f1.name) end if Next Next |
Отправлено: 13:41, 04-04-2013 | #55 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата DNBshon:
|
|
Отправлено: 17:06, 04-04-2013 | #56 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Так ... А как сделать так , чтоб в этих Case "Папка1", "Папка2", "Папка3" , данные удалялись ... а сами папки нет ? |
|
Отправлено: 13:15, 16-04-2013 | #57 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Чтобы не удалялись пустые папки, закомментируйте строку
Чтобы папки "Папка1", "Папка2", "Папка3" попадали в обработку — уберите само условие «Select Case …». Добиться данным скриптом корректной работы, чтобы данные удалялись, а папки — частично удалялись, частично нет, не получится. Ибо автором был изначально выбран неверный путь ориентации на размер папки при удалении (правильный путь — проверка количества вложенных папок и файлов). |
Отправлено: 15:34, 16-04-2013 | #58 |
Новый участник Сообщения: 8
|
Профиль | Отправить 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 Подскажите по поводу данного куска кода. Особенно второй аргументы. Меня интересует если в названии папки присутствует пробел. например C:\Program Files\ он правильно примет аргументы ? Или нужно будет указать "C:\Program Files\" ? |
Отправлено: 17:06, 16-05-2013 | #59 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата lipro122:
Цитата lipro122:
|
||
Отправлено: 03:31, 17-05-2013 | #60 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|