Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удаление файлов по дате больших размеров.

Ответить
Настройки темы
CMD/BAT - [решено] Удаление файлов по дате больших размеров.

Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Помогите разобраться пожалуйста. Я нашел скрипт, который хорошо выполняет свою функцию, удаляя устаревшие папки, но оставляя всегда нужное фиксированное количество резерва. Вот он:

@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
Благодарности: 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
Благодарности: 0

Профиль | Отправить PM | Цитировать


Огомное спасибо Евгений_Темный@fb, скрипт кажется работает, буду тестировать на рабочей системе!

Отправлено: 16:23, 03-06-2012 | #12



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удаление файлов по дате больших размеров.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход