|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Удаление файлов по маске/размеру/времени изменения |
|
VBS/WSH/JS - [решено] Удаление файлов по маске/размеру/времени изменения
|
Новый участник Сообщения: 9 |
Добрый день.
Сделал небольшой скрипт, который удаляет файлы в заданной папке по маске, размеру и времени изменения. В начале скрипта указывается папка, в которой будут удалятся файлы и у меня не получается заставить его работать с несколькими папками. Помогите пожалуйста научить скрипт брать имена папок из массива там, или из коллекции. Скрипт корявый, собирался из нескольких примеров, т.к. сам я первый день с VBS работаю, прошу сильно не пинать. Сам скрипт: Public objFSO Folder = "c:\papka" DeathLine = 14 Set objFSO = CreateObject("Scripting.FileSystemObject") If objFSO.FolderExists(Folder) Then Call ClrFolder(Folder) WScript.Echo "Готово." Else WScript.Echo "Не найден путь " & Folder End If WScript.Quit 0 Function ClrFolder(strFolder) Dim objFolder, objFile, objSubFolder Set objFolder = objFSO.GetFolder(strFolder) For Each objFile In objFolder.Files Datefile = objfile.DateLastModified DiffDate = DateDiff("d",Datefile,Now) if LCase(objFSO.GetExtensionName(File)) = "jpg" or _ LCase(objFSO.GetExtensionName(File)) = "xls" then If DiffDate > DeathLine and _ objFile.Size > 1048576 then objFile.Delete TRUE 'Next For Each objSubFolder In objFolder.SubFolders Call ClrFolder(objSubFolder.Path) Next end if next end Function |
|
Отправлено: 16:49, 09-07-2012 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 19:16, 09-07-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать Спасибо!
Выкладываю рабочий вариант для нужд ищущих ![]() Удаляет файлы в папках folder1,folder2,folder3, которые не редактировались более 7 дней, весят более 1мб и имеют формат jpg или xls. Public objFSO arrFolders = Array( _ "c:\folder1", _ "c:\folder2", _ "c:\folder3") DeathLine = 7 Set objFSO = CreateObject("Scripting.FileSystemObject") For Each strFolder In arrFolders If objFSO.FolderExists(strFolder) Then Call ClrFolder(strFolder) WScript.Echo "Папка "&strFolder&" очищена." Else WScript.Echo "Не найден путь " & strFolder End If next WScript.Quit 0 Function ClrFolder(strFolder) Dim objFolder, objFile, objSubFolder Set objFolder = objFSO.GetFolder(strFolder) For Each objFile In objFolder.Files Datefile = objfile.DateLastModified DiffDate = DateDiff("d",Datefile,Now) if LCase(objFSO.GetExtensionName(objFile)) = "jpg" or _ LCase(objFSO.GetExtensionName(objFile)) = "xls" then If DiffDate > DeathLine and _ objFile.Size > 1048576 then objFile.Delete TRUE For Each objSubFolder In objFolder.SubFolders Call ClrFolder(objSubFolder.Path) Next end if next end Function |
Отправлено: 19:56, 09-07-2012 | #3 |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать Немного исправил код, перенес все переменные в начало и добавил удаление пустых директорий.
Public objFSO arrFolders = Array( _ "c:\folder1", _ "c:\folder2", _ "c:\folder3") arrExt = Array("doc","ods","odt","txt","db","xls","jpg","gif","png",) DeathLine=60 FileByteSize=1024 Set objFSO = CreateObject("Scripting.FileSystemObject") For Each strFolder In arrFolders If objFSO.FolderExists(strFolder) Then Call DelFiles(strFolder) Call DelEmptyFolders(strFolder) WScript.Echo "Папка "&strFolder&" очищена." Else WScript.Echo "Не найден путь " & strFolder End If next WScript.Quit 0 Sub DelEmptyFolders(sFldr) Dim mDir, subDir, arDir Set mDir = objFSO.GetFolder(sFldr) Set subDir = mDir.SubFolders For Each arDir In subDir DelEmptyFolders arDir.Path Next If mDir.Size = 0 Then mDir.Attributes = 0 mDir.Delete End If End Sub Sub DelFiles(sFldr) Dim mainDir, objFile, subDir,arDir Set mainDir = objFSO.GetFolder(sFldr) Set subDir = mainDir.SubFolders For Each objFile In mainDir.Files For Each arrFileExt in arrExt Datefile = objFile.DateLastModified DiffDate = DateDiff("d",Datefile,Now) if LCase(objFSO.GetExtensionName(objFile)) = arrFileExt then If DiffDate >= DeathLine and _ objFile.Size > FileByteSize then objFile.Delete TRUE On Error Resume Next end if next next For Each arDir In subDir DelFiles arDir.Path Next end Sub |
Последний раз редактировалось nineline, 12-07-2012 в 15:58. Отправлено: 13:27, 12-07-2012 | #4 |
Старожил Сообщения: 474
|
Профиль | Отправить PM | Цитировать |
|
Отправлено: 15:02, 20-09-2012 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Попробуйте так:
Option Explicit Dim objFile With WScript.CreateObject("VBScript.RegExp") .IgnoreCase = True .Pattern = "^CheMaxRus.*\.lnk$" For Each objFile In WScript.CreateObject("Scripting.FileSystemObject").GetFolder(WScript.CreateObject("WScript.Shell").SpecialFolders.Item("Desktop")).Files If .Test(objFile.Name) Then objFile.Delete End If Next End With WScript.Quit 0 |
Отправлено: 19:12, 20-09-2012 | #6 |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать Добрый день, тему создавать не буду, думаю эта почти подходит.
Нужен скрипт который бы удалял в конкретной папке все папки, под папки, файлы кроме тех в название которые в начале стоит знак "!" Если в начале названия корневой папки нет знака "!" но внутри этой папки есть подпапки или файлы со знаком "!" то корневую папку удалять не надо. |
Отправлено: 08:36, 28-05-2015 | #7 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Перемещение и удаление файлов по условию и маске | VitHAK | Скриптовые языки администрирования Windows | 14 | 23-12-2013 08:57 | |
CMD/BAT - [решено] Удаление файлов по маске во времменых папках IE | Shpil83 | Скриптовые языки администрирования Windows | 16 | 25-05-2012 15:06 | |
CMD/BAT - [решено] удаление файлов по маске имени | hlpain | Скриптовые языки администрирования Windows | 4 | 02-09-2011 16:11 | |
CMD/BAT - [решено] Удаление одинаковых файлов по размеру | Arsenik77 | Скриптовые языки администрирования Windows | 27 | 08-08-2011 04:53 | |
Delphi - Перемещение и удаление файлов по маске. | Putin-mode | Программирование и базы данных | 1 | 21-06-2010 12:16 |
|