Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)

Модерирует : gyra, Maz

articlebot (21-06-2016 11:40): Следующая часть - Командная строка, батники, сценарии (bat, cmd)  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

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
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)
articlebot (21-06-2016 11:40): Следующая часть - Командная строка, батники, сценарии (bat, cmd)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru