![]() |
WSH скрипт для удаления файлов (логика скрипта внутри)
Есть скрипт для удаления пустых папок (взял из соседней темы)
Код:
strFldr = Wscript.arguments.Item(0) Логика скрипта на WSH такая: 1 - Нужен скрипт, который будет удалять файлы по маске (т.е. определенные типы файлы, которые занесены к примеру в тот же test.txt); 2 - Нужно задавать исключения на папки, которые будет пропускать (те же Windows, Programm Files и т.д., чтобы не стереть лишнее); 3 - Если файл занят - он его пропускает и движется дальше; 4 - Ну соответственно, если папки пустые - он их тоже удаляет; 5 - и последнее, чтобы он не трогал подключаемые диски (флешки, сетевые диски), а работал только с локальными (т.е. у которых значение DriveType==2 - это по-моему обозначение как раз-таки локальных); Немного покопавшись в книгах нашел пару записей, к примеру по пункту 2, вот есть "Выполнение программа для всех подпапок": Код:
Sub GoSubFolder (objDIR) Но прежде чем в какой-то папке выполнять он должен с ней соединиться, и получается вот такой код: Код:
Function GetFolder(sFOLDER) Код:
Sub DelFile(sFILE) Вот чтобы удалить все файлы определенного типа, нужно выполнить: Код:
Set FSO = CreateObject("Scripting.FileSystemObject") Получается чтобы скрипт нормально работал нужно, сначала написать GoSubFolder , потом GetFolder, потом DelFile и после этого уже "Определение конкретного типа", но у меня не получается соединить это воедино, чтобы оно нормально работало, все время вылезает какая-нибудь ошибка и не получается разобраться с пунктами 3 и 5 Может у кого, есть уже подобные скрипты. Буду рад любой помощи. |
Francyz, п.1-4 (шаблоны файлов/папок задаются регулярными выражениями):
Код:
sFldr = Wscript.Arguments.Item(0) |
amel27, Большое спасибо, по поводу 5-го пункта есть вот такое условие:
Код:
For Each objDrive In objFSO.Drives ' Перебираем все существующие тома. Можете подсказать, в каком месте его соединить с предложенным вами скриптом, чтобы убрать sFldr = Wscript.Arguments.Item(0) и я бы не вводил в CMD команду "Cscript testdel.vbs c:\", а просто ввел "Cscript testdel.vbs" и он уже тогда бы просканировал все найденные диски сам. |
Francyz, заменить 24-ю строку (та, что после "Set objFSO = ...") на:
Код:
For Each objDrive In objFSO.Drives |
amel27, Спасибо, добавил указанное условие и удалил вначале строчку sFldr = Wscript.Arguments.Item(0), чтобы не указывать диск самому, но ничего не происходит. Скрипт выполняется без ошибок, но никаких действий нет, я так понял из-за того, что не заменили переменную sFldr в остальных местах.
В указанном условии: Код:
For Each objDrive In objFSO.Drives Код:
было: Код:
Dim objDrive |
Цитата:
Код:
cInclFiles = Array( _ |
Большое спасибо, просто сбило с толку одинаковое название.
|
У меня вот возник вопрос, а как можно в самих исключениях настройку сделать?
Вот добавлена папка "\\Documents and Settings$" ее трогать не нужно, поскольку там много всего, но нужно в ней почистить две папки юзера: Desktop (тобишь рабочий стол) и Мои документы (там где картинки и все прочее.). Так вот вопрос: "это можно как-то дописать к исключению или нужно просто добавить еще одну функцию ниже Sub ClearDir и в ней указать просто эти две папки"? Вот есть код, для размещения ярлыка на рабочем столе, т.е. можно также считать путь к рабочему и удалить там (и по аналогии сделать для папки "Мои Документы")? Код:
rem Читаем путь к Рабочему столу |
Цитата:
Цитата:
Код:
cInclFiles = Array( _ |
Спасибо за пояснение.
|
amel27, Добрый день. Сейчас обнаружил небольшой баг с исключениями. Я так понял они только в корне диска работают, а если данная папка находиться в подпапке, то он удаляет все данные в ней.
К примеру добавлена папка в исключения Код:
"^.:\\Tester$", _ |
Цитата:
|
Время: 19:42. |
Время: 19:42.
© OSzone.net 2001-