|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удаление файлов по дате больших размеров. |
|
CMD/BAT - [решено] Удаление файлов по дате больших размеров.
|
Новый участник Сообщения: 7 |
Помогите разобраться пожалуйста. Я нашел скрипт, который хорошо выполняет свою функцию, удаляя устаревшие папки, но оставляя всегда нужное фиксированное количество резерва. Вот он:
@echo off SetLocal EnableExtensions set BackUp=MyDisk:\MyBackUp set Num=10 pushd %BackUp% for /f "tokens=* delims=" %%D in ('dir /ad /b /o-d') do call :Proceed "%%D" popd exit :Proceed if not %Num%==0 set /a Num-=1&exit /b echo %date% %time%: Erase %1>>%~dpn0.log rd /s /q %1 2>nul >nul exit /b Но есть 2 нюанса и соответственно в них и нужна помощь. 1. Этот скрипт не справляется вообще никак при работе с файлами очень больших размеров. А нужно удалять файлы объемом от 100ГБ+. 2. Когда очень много директорий, то приходиться прописывать условие и цикл для каждой директории, что конечно не есть хорошо. И кода много и батник при исполнении получается огромным. Помогите разобраться плиз. За ранее спасибо. |
|
Отправлено: 20:04, 20-12-2011 |
Новый участник Сообщения: 1
|
Профиль | Сайт | Отправить PM | Цитировать disk = Array ("C:", "D:") ' перечисление дисков в скобках search_dir = "_RecordVideo_" ' директория поиска limit = 20 ' предельное кол-во свободного места на жестком диске в Гб k = 30 ' кол-во дней Set fso = CreateObject ("Scripting.FileSystemObject") logfile = Left(WScript.ScriptName, Len(WScript.ScriptName) - 4) Set logfile = fso.OpenTextFile(logfile & ".log", 8, True) For i = 0 To UBound(disk) fs = fso.GetDrive(disk(i)).FreeSpace / (1024 * 1024 * 1024) If fs < limit Then Set fold = fso.GetFolder(disk(i) & "\" & search_dir) For Each subfold In fold.SubFolders data_cr = subfold.DateCreated data_fold = Right(subfold.Name, 2) & "." & Mid(subfold.Name, 3, 2) & "." & Left(subfold.Name, 2) d1 = DateDiff("d", data_cr, Date()) d2 = DateDiff("d", data_fold, Date()) If d1 > k Or d2 > k Then logfile.WriteLine Now() & " Директория " & subfold.Path & " удалена" subfold.Delete End If Next End If Next |
Отправлено: 14:57, 29-05-2012 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 2
|
Профиль | Отправить PM | Цитировать Огомное спасибо Евгений_Темный@fb, скрипт кажется работает, буду тестировать на рабочей системе!
|
Отправлено: 16:23, 03-06-2012 | #12 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Удаление папки по дате | Obnin | Скриптовые языки администрирования Windows | 8 | 14-12-2011 13:21 | |
CMD/BAT - [решено] Создание папок по дате получения файлов и перемещение в них файлов | KamikadZZe | Скриптовые языки администрирования Windows | 1 | 01-09-2011 14:15 | |
Любой язык - [решено] Вывод списка файлов и их размеров в байтах из заданной папки | Vadikan | Скриптовые языки администрирования Windows | 6 | 18-03-2011 23:16 | |
CMD/BAT - Удаление файлов по дате | ADGJMPTW | Скриптовые языки администрирования Windows | 1 | 10-10-2010 20:08 | |
Разное - Проблема с переносом файлов больших размеров на плеер | The_Berzerker | Накопители (SSD, HDD, USB Flash) | 2 | 01-07-2010 07:45 |
|