Автопереименование файлов при копировании на FTP

Обсуждение Total Commander. Установка, использование, настройка, решение проблем, скрытые функции. Обсуждение новых версий.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

coxxx
Сообщения: 5
Зарегистрирован: Сб фев 12, 2011 17:26

Автопереименование файлов при копировании на FTP

Сообщение coxxx »

Здравствуйте.
Скажите пожалуйста можно ли как нибудь сделать что бы ТС переименовывал файлы автоматически при копировании файлов на ФТП сервер файл1, файл2....файл999. Вариант сначала переименовать потом залить не подойдёт.

Я думаю, что должно быть что-то вроде автоинкримента.

Спасибо.

[mod="Avada"]Заголовок уточнён.[/mod]
Аватара пользователя
Вахмурка
Сообщения: 2587
Зарегистрирован: Пн дек 27, 2004 14:47
Откуда: Большая деревня Москва
Контактная информация:

Сообщение Вахмурка »

Внутренних средств в Тотале нет. Я бы и сам поднатужился, батник сваял, но у нас есть куда более компетентные товарищи, например, Tol!k. Только предупреждаю, он будет дотошно задавать всякие вопросы: одинаковы ли путь-источник и путь-приемник, сколько разрядов в номере, в одной ли директории файлы, и т.д. Так что лучше заранее поставить задачу до неприличия подробно.
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
coxxx
Сообщения: 5
Зарегистрирован: Сб фев 12, 2011 17:26

Сообщение coxxx »

Спасибо! Может написать плагин самому? Надо будет изучить тотал получше.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Вахмурка, батник тут наверное будет написать проблематично, так как вторая панель - FTP-папка.

Типов плагинов для реализации данной функции тоже нет, разве что писать весь FTP-клиент как плагин файловой системы и в него добавлять подобную функциональность (и то может не работать, если тотал будет сам проверять существование файла перед копированием, а не спрашивать у плагина.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Интересно, с чем связано отсутствие функционала обычного диалога копирования в диалоге для FTP? В обычном-то с этим всё просто.
coxxx
Сообщения: 5
Зарегистрирован: Сб фев 12, 2011 17:26

Сообщение coxxx »

Flasher писал(а):Интересно, с чем связано отсутствие функционала обычного диалога копирования в диалоге для FTP? В обычном-то с этим всё просто.
Хороший вопрос
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

вторая панель - FTP-папка.
Как получить сервер? %T возвращает:
0:/pub/drweb/bases/\
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

Код: Выделить всё

@echo off &setlocal enableextensions
rem   Параметры: <список_файлов> <хост> <удалённая_папка>
rem   например : %L ftp.web.com "pub/web/base/"
rem   Удалённая папка должна существовать
rem   Автор    : Tol!k

set "prefix=file"
rem   Цифр после префикса (надеюсь, 9 хватит):
set "nums=4"

set "host=%~2"
set "remote=%~3"
set /p user=User:
set /p pass=Password:

>get.list.tmp echo user %user% %pass%
>>get.list.tmp echo cd %remote%
>>get.list.tmp echo ls %prefix%* ftp.list.tmp
>>get.list.tmp echo bye
ftp -n -v -s:get.list.tmp %host%
del /q get.list.tmp
set "digs="
for /l %%i in (1,1,%nums%) do call set "digs=%%digs%%[0-9]"
for /f "delims=" %%n in (
'sort /r ftp.list.tmp ^|findstr /rc:"^%prefix%%digs%\..*"'
) do (set "last=%%~nn" &goto :next)
:next
call set "last=%%last:%prefix%=%%"
if "%last:~0,1%"=="0" call :loop
if "%last%"=="" set "last=0"

>put.list.tmp echo user %user% %pass%
>>put.list.tmp echo cd %remote%
for /f "usebackq delims=" %%l in ("%~1") do call :put "%%l"
>>put.list.tmp echo bye
ftp -n -v -s:put.list.tmp %host%
del /q put.list.tmp ftp.list.tmp
pause
goto :eof

:put
set /a last+=1
set "next=000000000%last%"
>>put.list.tmp call echo put %1 "%prefix%%%next:~-%nums%%%%~x1"
rem   Если нужно менять и расширение тоже:
rem >>put.list.tmp call echo put %1 "%prefix%%%next:~-%nums%%%.ext"
goto :eof

:loop
set "last=%last:~1,9%"
if "%last:~0,1%"=="0" call :loop
goto :eof
Последний раз редактировалось Tol!k Ср фев 23, 2011 11:48, всего редактировалось 1 раз.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Ого, наваял. :)
Tol!k, а почему бы тебе хост, имя юзера и пароль не сделать параметрами?
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

Ничего невозможного, но не дофига параметров получится – список, хост, папка, юзер, пароль
Да и какбы не безопасно хранить пароль на диске
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Хм, ещё и папка. Пароль и раньше хранить было в ТС небезопасно. В батнике, AFAIK, тоже небезопасно. Хочешь - просто напиши, что и где менять.
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

Пароль не хранится. Это тестовые строки.
rem set "user=anonymous"
rem set "pass=bug@host.com"

Нужно удалить от греха

Пароль запрашивается здесь, интерактивно
set /p user=User:
set /p pass=Password:

что и где менять
Я думал и так понятно
хост set "host=ftp.web.com"
удалённая папка set "remote=pub/web/base/"
префикс для файлов set "prefix=file"
т.е. будет получаться ftp://ftp.web.com/pub/web/base/file0000.ext
Важно! папка не создаётся, т.е. уже должна существовать
Последний раз редактировалось Tol!k Пн фев 14, 2011 13:39, всего редактировалось 1 раз.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Tol!k писал(а):Пароль запрашивается здесь, интерактивно
А, в консольном окне, ясно.
Tol!k писал(а):Я думал и так понятно
Ты забыл о чём речь? Я о параметрах вообще-то. :wink:
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

Я о параметрах
Я и сейчас не сразу понял, что тебе нужны изменения чтобы вся хрень передавалась параметрами

Код: Выделить всё

rem set "host=ftp.web.com"
rem set "remote=pub/web/base/"
set "host=%~2"
set "remote=%~3"
rem   Параметры: <список_файлов> <хост> <удалённая_папка> User Password
rem   например : %L ftp.web.com "pub/web/base/" anonymous "bug@host.com"
...
rem set /p user=User:
rem set /p pass=Password:
set "user=%~4"
set "pass=%~5"
Изменил http://forum.wincmd.ru/viewpost.php?p=74242 :
хост и папку сделал параметрами, User и Password оставил запросом
Последний раз редактировалось Tol!k Ср фев 23, 2011 11:55, всего редактировалось 1 раз.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Проще пареной, ясно. :)
Ответить