Имя: Пароль:
IT
Админ
Скрипт для удаления пустых папок
0 zSpartakz
 
02.11.23
14:22
Здравствуйте! Подскажите пожалуйста скрипт можно vbs. чтобы удаляло папки пустые с проверкой что там ничего нет, например создалась папка(она пустая) пролежала 2.5 месяца и удалилась и так далее!
1 Волшебник
 
02.11.23
14:39
В VBS для работы с файловой системой существует FileSystemObject.

Set FSO=CreateObject("Scripting.FileSystemObject")

Set fold = fso.GetFolder("c:\Windows\")

...

fso.DeleteFolder ("C:\example") — удалить папку C:\Example
2 zSpartakz
 
02.11.23
14:52
Извини не правильно задал вопрос! есть effector saver там задана команда(скрипт) который удаляет папки пустые! папок создается много что то с файлами что то без! папки хранятся с файлами по 2 месяца и файлы удаляются потом, а вот папки пустые нужно удалять через 2.5 месяца
3 zSpartakz
 
02.11.23
14:53
#Использовать cmdline

Перем strPathToClear;
Перем intDays2Live;
Перем Парсер;

Процедура НачальныеУстановки()

    Сообщить("Начальная установка");
    
    Парсер         = Новый ПарсерАргументовКоманднойСтроки();
    Параметры    = ЗаполнитьПараметры();
    
    Если АргументыКоманднойСтроки.Количество() = 0 Тогда        
        Сообщить("Не заданы аргументы командной строки!");        
        ЗавершитьРаботу(1);
    КонецЕсли;
    
    strPathToClear = Параметры["ПутьККаталогу"];//"F:\photo\15\15\Документ\";
    Сообщить(strPathToClear);
    intDays2Live = 80;
КонецПроцедуры

Функция ЗаполнитьПараметры()

    Парсер.ДобавитьПараметр("ПутьККаталогу");
    Возврат Парсер.Разобрать(АргументыКоманднойСтроки);    
    
КонецФункции

Процедура ВыполнитьОчистку()
    Список = Новый СписокЗначений();
    Список.Добавить("Взвешивание");
    Список.Добавить("ПриемоСдаточныйАкт");
    Список.Добавить("ПриемоСдаточныйАктЦветМет");
    FSO = Новый COMОбъект("Scripting.FileSystemObject");
    Для Каждого Элем Из Список Цикл
        Если FSO.FolderExists(strPathToClear+Элем.Значение) Then
            ClearFolders(FSO.GetFolder(strPathToClear+Элем.Значение));
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

Процедура ClearFolders(objFolder)
    Сообщить(objFolder.Name);
    ДеньВСек = (60 * 60 * 24);
    Для Каждого objSubFolder Из objFolder.SubFolders Цикл
        Если objSubFolder.Files.Count = 0 Тогда
            Если ((НачалоДня(ТекущаяДата()) - НачалоДня(objSubFolder.DateCreated)) / ДеньВСек) >  intDays2Live Тогда
            //Если DateDiff("d", objSubFolder.DateLastModified, ТекущаяДата()) > intDays2Live Тогда   //DateCreated
                Сообщить(objSubFolder.Name);
                objSubFolder.Delete(True)
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

НачальныеУстановки();
ВыполнитьОчистку();
4 Волшебник
 
02.11.23
14:54
(2) Зачем Вы ставите восклицательные знаки? Успокойтесь
5 zSpartakz
 
02.11.23
14:54
Я спокоен)))