|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] WSH скрипт для удаления файлов (логика скрипта внутри) |
|
VBS/WSH/JS - [решено] WSH скрипт для удаления файлов (логика скрипта внутри)
|
Новый участник Сообщения: 14 |
Профиль | Отправить PM | Цитировать
Есть скрипт для удаления пустых папок (взял из соседней темы)
strFldr = Wscript.arguments.Item(0) Dim oD, cD, oI Set objFSO = CreateObject("Scripting.FileSystemObject") DelBlank strFldr Sub DelBlank(sFldr) Set oD = objFSO.GetFolder(sFldr) Set cD = oD.SubFolders For Each oI In cD DelBlank oI.Path Next If oD.Size = 0 Then wscript.echo OD + " - Folder delete" oD.Attributes = 0 oD.Delete else wscript.echo OD + " - Folder is no Empty" End If End Sub Логика скрипта на WSH такая: 1 - Нужен скрипт, который будет удалять файлы по маске (т.е. определенные типы файлы, которые занесены к примеру в тот же test.txt); 2 - Нужно задавать исключения на папки, которые будет пропускать (те же Windows, Programm Files и т.д., чтобы не стереть лишнее); 3 - Если файл занят - он его пропускает и движется дальше; 4 - Ну соответственно, если папки пустые - он их тоже удаляет; 5 - и последнее, чтобы он не трогал подключаемые диски (флешки, сетевые диски), а работал только с локальными (т.е. у которых значение DriveType==2 - это по-моему обозначение как раз-таки локальных); Немного покопавшись в книгах нашел пару записей, к примеру по пункту 2, вот есть "Выполнение программа для всех подпапок": Sub GoSubFolder (objDIR) If objDIR <> "\System Volume Information" Then MainSub objDIR For Each eFolder in objDIR.SubFolders GoSubFolders eFolder Next End If End Sub Но прежде чем в какой-то папке выполнять он должен с ней соединиться, и получается вот такой код: Function GetFolder(sFOLDER) On Error Resume Next Set GetFolder = FSO.GetFolder(sFOLDER) If Err.Number <> 0 Then Wscript.Echo "Error connecting to folder:" & sFOLDER & VBlf & "[" & Err.Number & "]" & Err.Description Wscript.Quit Err.Number End If End Function Sub DelFile(sFILE) On Error Resume Next FSO.Delete File sFILE, True If Err.Number <> 0 Then Wscript.Echo "Error deleting file: " & sFILE End If End sub Вот чтобы удалить все файлы определенного типа, нужно выполнить: Set FSO = CreateObject("Scripting.FileSystemObject") sDIR = "directory" sEXT = "EXT" Set objDIR = GetFolder(sDIR) GoSubFolders objDIR Sub MainSub (objDIR) For Each efile in obj.DIR.Files fEXT = FSO.GetExtensionName(efile.Path) If LCase(fEXT) = LCase(sEXT) Then DelFile efile End If Next End sub Получается чтобы скрипт нормально работал нужно, сначала написать GoSubFolder , потом GetFolder, потом DelFile и после этого уже "Определение конкретного типа", но у меня не получается соединить это воедино, чтобы оно нормально работало, все время вылезает какая-нибудь ошибка и не получается разобраться с пунктами 3 и 5 Может у кого, есть уже подобные скрипты. Буду рад любой помощи. |
|
Отправлено: 16:10, 13-05-2010 |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать amel27, Добрый день. Сейчас обнаружил небольшой баг с исключениями. Я так понял они только в корне диска работают, а если данная папка находиться в подпапке, то он удаляет все данные в ней.
К примеру добавлена папка в исключения И скрипт пашет если вариант вот такой: "C:\\Tester", но если "C:\\Новая папка\Tester" и скрипт удаляет все файлы в ней. Я так понял что дело в символах перед наименованием папки ^.:\\ - они обозначают, как раз только букву диска, не распространясь на папки. |
Отправлено: 11:08, 25-05-2010 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Francyz:
|
|
Отправлено: 11:22, 25-05-2010 | #12 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBS/WSH/JS - [решено] Скрипт для удаления старых файлов и папок из определенной папки | avfiga | Скриптовые языки администрирования Windows | 71 | 07-01-2023 18:50 | |
Любой язык - нужен скрипт для удаления всех файлов кроме нужных для запуска Windows XP | Dark Ange1 | Скриптовые языки администрирования Windows | 11 | 07-03-2010 13:34 | |
[решено] Скрипт для удаления нужных слов в ini файле | Pozia | AutoIt | 23 | 27-10-2009 18:42 | |
MSFT SQL Server - [решено] Преобразование скрипта для Oracle в скрипт для SQL | EvgeniyQQQ | Программирование и базы данных | 3 | 25-03-2009 01:26 | |
Скрипт для удаления директорий | dallas | Программирование и базы данных | 5 | 15-01-2003 19:28 |
|