View previous topic :: View next topic |
Author |
Message |
deniel87
Joined: 02 May 2010 Posts: 3
|
(Separately) Posted: Sun May 02, 2010 15:50 Post subject: Копирование с переименовыванием по счетчику |
|
|
Здравствуйте.Можно ли реализовать такую весч в TC?Например имееться папка приемник,я перетаскиваю в нее файл ******.jpg и он сохраняеться как 001.jpg Перетаскиваю следующий файл *****.jpg и он сохраняеться как 002.jpg и так далее по счетчику.При этом главное чтоб TC у меня ничего не спрашивал,а сразу сохранял файл с новым именем.Пакетное переименовывание не подходит так как исходные файлы раскиданы по разным папкам.И я в ручную просматрюю и копирую файл который мне нужен.Заранее благодарен! |
|
Back to top |
|
|
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Sun May 02, 2010 18:57 Post subject: |
|
|
Первый блин:
катастрофически падает скорость при большом кол-ве файлов в целевой папке
Del
Не такая тормознутая версия здесь
Сохрани код в текстовый файл с расш. CMD;
создай кнопку;
выделяй файлы и нажимай кнопку
Last edited by Tol!k on Mon May 03, 2010 13:40; edited 6 times in total |
|
Back to top |
|
|
Andrey_A
Joined: 10 Apr 2009 Posts: 394 Location: Сочи
|
(Separately) Posted: Sun May 02, 2010 21:03 Post subject: |
|
|
Код работает, а если хочется сохранять не 00001, 00002... , а
Изображение_001, Изображение_002.... т.е. если в коде был бы третий параметр, куда вставлять начальное имя, было бы здорово |
|
Back to top |
|
|
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Sun May 02, 2010 21:46 Post subject: |
|
|
Сделал необязательный третий параметр. Код во втором посте. |
|
Back to top |
|
|
Andrey_A
Joined: 10 Apr 2009 Posts: 394 Location: Сочи
|
(Separately) Posted: Mon May 03, 2010 00:39 Post subject: |
|
|
Спасибо работает! В первом посте речь шла о файлах, но в название общее. Почему бы и для папок не сделать то же самое |
|
Back to top |
|
|
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Mon May 03, 2010 01:29 Post subject: |
|
|
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 |
|
|
Andrey_A
Joined: 10 Apr 2009 Posts: 394 Location: Сочи
|
(Separately) Posted: Mon May 03, 2010 04:49 Post subject: |
|
|
Tol!k спасибо! Ещё одна просьба, у меня в папке приёмнике ведётся несколько списков по именам. Т.е. если файл с именем Info, то он записывается как Info_0001, (проверяется твоим скриптом) Info_0002... Но там ещё и другие файлы записываются подобным образом txt_0001..., ini_0001.. Если добавить третий параметр %O, то поодиночке добавлять файлы\папки можно, а при выделении сравнение происходит по одному имени. Можно ли рассмотреть третий параметр %F.
Может запутанно, но вот как частный вариант этого: параметры скрипта %L %p %F - копируют файлы и папки в ту же панель с проверкой нет ли подобного имени и добавлением 000N+1 |
|
Back to top |
|
|
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Mon May 03, 2010 10:11 Post subject: |
|
|
Не понял. Давай примеры, что было и что должно получиться. |
|
Back to top |
|
|
Andrey_A
Joined: 10 Apr 2009 Posts: 394 Location: Сочи
|
(Separately) Posted: Mon May 03, 2010 12:16 Post subject: |
|
|
Есть папка приёмник, в которой уже находятся файлы и папки:
Музыка_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 |
|
|
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Mon May 03, 2010 13:46 Post subject: |
|
|
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 |
|
|
Andrey_A
Joined: 10 Apr 2009 Posts: 394 Location: Сочи
|
(Separately) Posted: Mon May 03, 2010 13:58 Post subject: |
|
|
Огромное спасибо Tol!k! Спасибо за скорость. Остался маленький вопрос. Вылетающее окно командной строки можно ли как-то скрыть или в фоне организовать. |
|
Back to top |
|
|
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Mon May 03, 2010 14:05 Post subject: |
|
|
В настройках кнопки есть галка "в свёрнутом виде" |
|
Back to top |
|
|
Andrey_A
Joined: 10 Apr 2009 Posts: 394 Location: Сочи
|
(Separately) Posted: Mon May 03, 2010 14:25 Post subject: |
|
|
Вот за этот совет Tol!k тебе отдельное спасибо! Тоталом пользуюсь примерно 4-5 лет, а этой кнопкой никогда не использовал, теперь буду знать!!! |
|
Back to top |
|
|
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Mon May 03, 2010 16:15 Post subject: |
|
|
+ Добавил проверку переполнения счётчика.
Раньше после №9999 создавался №0000, а затем обработка аварийно прерывалась с сообщением о переполнении стека. |
|
Back to top |
|
|
ask-rus
Joined: 10 Nov 2009 Posts: 2076 Location: Russian Federation
|
(Separately) Posted: Mon May 02, 2011 11:44 Post subject: |
|
|
Кнопка:
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 |
|
|
|