Удалить файлы по размеру и дате создания (не изменения)
Желательно сделать как cmd/bat скрипт, но сгодится и vbs.
Есть непрерывно записывающая веб-камера и желание автоматически удалять старые записи, на которых судя по всему ничего не происходило. Размеры файлов для удаления либо более 40000000 байт (камеру глючит ночью и она пишет с максимальным битрейтом), либо менее 15000000 байт, расширения файлов avi. Скрипт будет добавлен в планировщик задач.
Должно корректно работать при смене месяца. К сожалению, камера не проставляет дату изменения файла (везде ставит 1970 год), только дату создания, так что FORFILES /D -7 отпадает с ошибкой ОШИБКА: параметр задан неверно.
Как вариант дату можно получать из названия папки или самих файлов. Например, последняя запись должна лежать в папке 20140905 и называться вроде 20140905_180501.avi
|
Vlad87, этот пакетный файл создаст Вам другой пакетный файл, просмотрев содержимое которого, Вы сделаете вывод: запускать его или нет.
Код:
@echo off
set "folder=D:\Webcam"
set days=7
set min=15000000
set max=40000000
(
echo @echo off
echo.
echo.
echo :: Удаляем все папки, которые старше %days% дней, вместе с файлами:
(
forfiles /p "%folder%" /d -%days% /c "cmd /c if /i @isdir==true echo rd /q/s @path" 2>nul
)|| echo rem Не найдены.
echo.
echo.
echo :: Удаляем файлы, размер которых меньше %min% байтов:
echo.
(
for /f "tokens=*" %%i in ('
robocopy "%folder%" %random% /nc /ns /ndl /njh /njs /l /e /max:%min%
') do (
echo del "%%i"
)
)|| echo rem Не найдены.
echo.
echo.
echo :: Удаляем файлы, размер которых больше %max% байтов:
echo.
(
for /f "tokens=*" %%i in ('
robocopy "%folder%" %random% /nc /ns /ndl /njh /njs /l /e /lev:2 /min:%max%
') do (
echo del "%%i"
)
)|| echo rem Не найдены.
echo.
echo.
echo :: Удаляем пустые папки:
echo.
(
for /d %%i in ("%folder%\*") do (
(
for /f %%j in ('dir /a/b "%%i"') do pause<nul>nul
)|| echo rd /q/s "%%i"
)
)|| echo rem Не найдены.
echo.
echo.
echo exit
)>"Delete.cmd"
exit /b
.
|
Цитата:
Цитата Georgio
Vlad87, этот пакетный файл создаст Вам другой пакетный файл, просмотрев содержимое которого, Вы сделаете вывод: запускать его или нет. »
|
Благодарю, попробую его запустить в понедельник. Но подозреваю, что это не совсем то: удалять папки целиком я не планировал. В любом случае напишу результат. Если не получится - буду отталкиваться от VBS конструкции dateadd("d",-7,now)
Да, это действительно не совсем то: в сгенерированном файле прописались команды на удаление старых папок целиком и свежесозданных файлов подходящего размера с любым расширением.
|
Время: 16:04.
© OSzone.net 2001-