angeltwo
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Код: ::# -*- coding: cp1251 -*- @echo off cls chcp 1251>nul ::адрес сервера ftp set ftp_server=127.0.0.1 ::Логин для ftp set ftp_login=anonymous ::Пароль для ftp set ftp_password=anonymous@sample.com ::файлы с каким расширением удалять. Через пробел. Например, .zip .rar set del_ext=.exe .zip ::насколько старые файлы удалять. Значение в днях set max_day=30 ::НЕОБЯЗАТЕЛЬНЫЕ ПАРАМЕТРЫ ::каталог в который надо перейти на ftp, например, /Papka. Обязательно начинать с корневого пути (/), без кавычек. set ftp_path=/ ::просматривать ли вложенные подпапки на ftp? Чтобы рекурсивно проверить папку на ftp со всеми ее подпапками, задать здесь любое значение, например 1 set ftp_subdir=1 ::глубина рекурсии. Число, задающее сколько уровней вложенности папок просматривать, если не задано, то будет 255 set ftp_levelSubfolders= del /q ftplistfiles.txt 2>nul del /q ftplistdirs.txt 2>nul if not defined ftp_path set ftp_path=/ call :GetListDirFiles "%ftp_path%" if not defined ftp_levelSubfolders set ftp_levelSubfolders=255 if defined ftp_subdir if %ftp_levelSubfolders% GTR 0 call :Recursive del /q ftplistdirs.txt 2>nul call :DeleteOldFiles del /q ftplistfiles.txt 2>nul goto :EOF :DeleteOldFiles ( echo OPEN %ftp_server% echo %ftp_login% echo %ftp_password% echo QUOTE PASV echo QUOTE OPTS UTF8 OFF for /f "delims=" %%i in (ftplistfiles.txt) do echo QUOTE MDTM "%%i" echo BYE )>ftpcommands.txt del /q ftplistfiles2.txt 2>nul setlocal enabledelayedexpansion set skipfile= for /f "tokens=2" %%i in ('ftp -s:ftpcommands.txt ^| findstr /R "^213\>"') do ( set MDT=%%i set MDT=!MDT:~0,-6! call :ReadListFiles ) del /q ftpcommands.txt 2>nul del /q ftpfilestodelete.txt 2>nul for /f "delims=> tokens=1,2" %%i in (ftplistfiles2.txt) do ( for /f %%d in ('powershell -Command "((Get-Date).ToUniversalTime()-(Get-Date %%i)).Days"') do ( set DiffDate=%%d if !DiffDate! GTR %max_day% ( echo %%j>>ftpfilestodelete.txt echo DELETE %%j ) ) ) endlocal ( echo OPEN %ftp_server% echo %ftp_login% echo %ftp_password% echo QUOTE PASV echo QUOTE OPTS UTF8 OFF for /f "delims=" %%i in (ftpfilestodelete.txt) do echo DELETE "%%i" echo BYE )>ftpcommands.txt ftp -s:ftpcommands.txt>nul del /q ftpcommands.txt 2>nul del /q ftplistfiles2.txt 2>nul goto :EOF :ReadListFiles for /f "delims= %skipfile%" %%b in (ftplistfiles.txt) do ( set /a y+=1 set skipfile=skip=!y! echo !MDT:~0,-4!-!MDT:~4,-2!-!MDT:~6!^>%%b>>ftplistfiles2.txt goto continue ) :continue goto :EOF :Recursive setlocal enabledelayedexpansion set skipdirinfile= :m set /a leveldir+=1 if %leveldir% GTR %ftp_levelSubfolders% goto n (for /f "delims= %skipdirinfile%" %%i in (ftplistdirs.txt) do ( set /a x+=1 set skipdirinfile=skip=!x! echo Read %%i call :GetListDirFiles "%%i" )) || goto n goto m :n endlocal goto :EOF :GetListDirFiles if -%1==-"" goto :EOF set CurDir=%1 set CurDir=%CurDir:~1% set CurDir=%CurDir:~0,-1%/ set CurDir=%CurDir://=/% ( echo OPEN %ftp_server% echo %ftp_login% echo %ftp_password% echo QUOTE PASV echo QUOTE OPTS UTF8 OFF if not "%CurDir%"=="/" echo CD "%CurDir%" echo DIR echo BYE )>ftpcommands.txt echo Get list of dirs in %CurDir% on %ftp_server% for /f "tokens=1-8*" %%i in ('ftp -s:ftpcommands.txt ^| findstr /R "^d[-wxr]*[-wxr]\>"') do echo %CurDir%%%q>>ftplistdirs.txt echo Get list of files in %CurDir% on %ftp_server% for /f %%z in ("%del_ext%") do ( for /f "tokens=1-8*" %%i in ('ftp -s:ftpcommands.txt ^| findstr /R "^-[-wxr]*[-wxr]\> .*%%z$"') do echo %CurDir%%%q>>ftplistfiles.txt ) del /q ftpcommands.txt 2>nul goto :EOF |
| Всего записей: 257 | Зарегистр. 09-05-2007 | Отправлено: 10:57 11-08-2013 | Исправлено: angeltwo, 11:08 11-08-2013 |
|