Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Копирование с переименовыванием по счетчику
Goto page 1, 2, 3 ... 11, 12, 13  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
deniel87



Joined: 02 May 2010
Posts: 3

Post (Separately) Posted: Sun May 02, 2010 15:50    Post subject: Копирование с переименовыванием по счетчику Reply with quote

Здравствуйте.Можно ли реализовать такую весч в TC?Например имееться папка приемник,я перетаскиваю в нее файл ******.jpg и он сохраняеться как 001.jpg Перетаскиваю следующий файл *****.jpg и он сохраняеться как 002.jpg и так далее по счетчику.При этом главное чтоб TC у меня ничего не спрашивал,а сразу сохранял файл с новым именем.Пакетное переименовывание не подходит так как исходные файлы раскиданы по разным папкам.И я в ручную просматрюю и копирую файл который мне нужен.Заранее благодарен!
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Sun May 02, 2010 18:57    Post subject: Reply with quote

Первый блин:
катастрофически падает скорость при большом кол-ве файлов в целевой папке

Del
Не такая тормознутая версия здесь

Сохрани код в текстовый файл с расш. CMD;
создай кнопку;
выделяй файлы и нажимай кнопку


Last edited by Tol!k on Mon May 03, 2010 13:40; edited 6 times in total
Back to top
View user's profile Send private message
Andrey_A



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Sun May 02, 2010 21:03    Post subject: Reply with quote

Код работает, а если хочется сохранять не 00001, 00002... , а
Изображение_001, Изображение_002.... т.е. если в коде был бы третий параметр, куда вставлять начальное имя, было бы здорово
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Sun May 02, 2010 21:46    Post subject: Reply with quote

Сделал необязательный третий параметр. Код во втором посте.
Back to top
View user's profile Send private message
Andrey_A



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Mon May 03, 2010 00:39    Post subject: Reply with quote

Спасибо работает! В первом посте речь шла о файлах, но в название общее. Почему бы и для папок не сделать то же самое
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Mon May 03, 2010 01:29    Post subject: Reply with quote

Code:
@echo off &chcp 1251 >nul
rem  Копирование файлов и папок с переименованием по счётчику
rem  Параметры кнопки: %L "%T" "Приставка_"
rem  или: %L "d:\куда копировать\"
rem  Автор: Tol!k

set "targ=%~2" &set "prist=%~3"
setlocal enableextensions
for /f "usebackq delims=" %%f in ("%~1") do call :p "%%f"
exit /b

:p
set "name=%~1" &set "ext=%~x1"
set "n=0"
call :loop 1000 &set /a n-=1000
call :loop 100 &set /a n-=100
call :loop 10 &set /a n-=10
call :loop 1
title %new%
if "%name:~-1%"=="\" (
xcopy "%name%*" "%targ%\%new%" /i /s/e /k/r/h >nul
) else (
echo f| xcopy "%name%" "%targ%\%new%" /k/r/h >nul
)
goto :eof

:loop
if "%n%"=="9999" (
title STOP
echo 9999 единиц в месте назначения,
echo недостаточно разрядности счётчика.
pause >nul &exit
)
set /a n+=%1
set "e=000%n%"
set "e=%e:~-4%"
set "new=%prist%%e%%ext%"
if exist "%targ%\%new%" call :loop %1
goto :eof


Last edited by Tol!k on Mon May 03, 2010 16:50; edited 3 times in total
Back to top
View user's profile Send private message
Andrey_A



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Mon May 03, 2010 04:49    Post subject: Reply with quote

Tol!k спасибо! Ещё одна просьба, у меня в папке приёмнике ведётся несколько списков по именам. Т.е. если файл с именем Info, то он записывается как Info_0001, (проверяется твоим скриптом) Info_0002... Но там ещё и другие файлы записываются подобным образом txt_0001..., ini_0001.. Если добавить третий параметр %O, то поодиночке добавлять файлы\папки можно, а при выделении сравнение происходит по одному имени. Можно ли рассмотреть третий параметр %F.
Может запутанно, но вот как частный вариант этого: параметры скрипта %L %p %F - копируют файлы и папки в ту же панель с проверкой нет ли подобного имени и добавлением 000N+1
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Mon May 03, 2010 10:11    Post subject: Reply with quote

Не понял. Давай примеры, что было и что должно получиться.
Back to top
View user's profile Send private message
Andrey_A



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Mon May 03, 2010 12:16    Post subject: Reply with quote

Есть папка приёмник, в которой уже находятся файлы и папки:
Музыка_0001
Музыка_0002
Info_0001.txt
Info_0002.txt
Info_0003.txt
Txt_0001.txt
...
необходимо выделенные папки и файлы скопировать туда же с добавлением 000N и с сохранённым началом именем, пример:
(Я выделяю папку Музыка, файл Info.txt , Txt.txt ... нажимаю .cmd и они копируются в папку приёмник)
Музыка -> Музыка_0003
Info.txt -> Info_0004.txt
Txt.txt -> Txt_0002.txt
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Mon May 03, 2010 13:46    Post subject: Reply with quote

Code:
@echo off &chcp 1251 >nul
rem  Копирование файлов и папок с добавлением счётчика
rem  Параметры кнопки: %L "%T"
rem  или: %L "d:\куда копировать\"
rem  Автор: Tol!k

set "targ=%~2"
setlocal enableextensions
for /f "usebackq delims=" %%f in ("%~1") do call :p "%%f" "%%f."
exit /b

:p
set "prist=%~n1"
if "%prist%"=="" set "prist=%~n2"
set "name=%~1" &set "ext=%~x1"
set "n=0"
call :loop 1000 &set /a n-=1000
call :loop 100 &set /a n-=100
call :loop 10 &set /a n-=10
call :loop 1
title %new%
if "%name:~-1%"=="\" (
xcopy "%name%*" "%targ%\%new%" /i /s/e /k/r/h >nul
) else (
echo f| xcopy "%name%" "%targ%\%new%" /k/r/h >nul
)
goto :eof

:loop
if "%n%"=="9999" (
title STOP
echo 9999 единиц в месте назначения,
echo недостаточно разрядности счётчика.
pause >nul &exit
)
set /a n+=%1
set "e=000%n%"
set "e=%e:~-4%"
set "new=%prist%_%e%%ext%"
if exist "%targ%\%new%" call :loop %1
goto :eof

+ Добавил скорости в этом и предыдущем батнике


Last edited by Tol!k on Mon May 03, 2010 16:49; edited 3 times in total
Back to top
View user's profile Send private message
Andrey_A



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Mon May 03, 2010 13:58    Post subject: Reply with quote

Огромное спасибо Tol!k! Спасибо за скорость. Остался маленький вопрос. Вылетающее окно командной строки можно ли как-то скрыть или в фоне организовать.
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Mon May 03, 2010 14:05    Post subject: Reply with quote

В настройках кнопки есть галка "в свёрнутом виде"
Back to top
View user's profile Send private message
Andrey_A



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Mon May 03, 2010 14:25    Post subject: Reply with quote

Вот за этот совет Tol!k тебе отдельное спасибо! Тоталом пользуюсь примерно 4-5 лет, а этой кнопкой никогда не использовал, теперь буду знать!!!
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Mon May 03, 2010 16:15    Post subject: Reply with quote

+ Добавил проверку переполнения счётчика.
Раньше после №9999 создавался №0000, а затем обработка аварийно прерывалась с сообщением о переполнении стека.
Back to top
View user's profile Send private message
ask-rus



Joined: 10 Nov 2009
Posts: 2076
Location: Russian Federation

Post (Separately) Posted: Mon May 02, 2011 11:44    Post subject: Reply with quote

Кнопка:
Code:
[em_FileCopy]
button=%COMMANDER_PATH%\ICO\em_FileCopy.ico
cmd=cmd /c title Копия... &
param=for %%U in (%S) do echo f|xcopy/y/c/h/r/k/g/z %%U "Копия %%~nU%%~xU"
iconic=1
menu=Создать копию файла

Необходима аналогичная для создания пяти копий одного файла.
Файл "Хмурый":
- "Копия Хмурый"
- "Копия Хмурый (2)"
- "Копия Хмурый (3)"
- "Копия Хмурый (4)"
- "Копия Хмурый (5)"
_________________
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page 1, 2, 3 ... 11, 12, 13  Next
Page 1 of 13

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group