Копирование с переименовыванием по счетчику
Select messages from
# through # FAQ
[/[Print]\]
Goto page 1, 2, 3 ... 11, 12, 13  Next  :| |:
Total Commander -> Автоматизация Total Commander

#1: Копирование с переименовыванием по счетчику Author: deniel87 PostPosted: Sun May 02, 2010 15:50
    —
Здравствуйте.Можно ли реализовать такую весч в TC?Например имееться папка приемник,я перетаскиваю в нее файл ******.jpg и он сохраняеться как 001.jpg Перетаскиваю следующий файл *****.jpg и он сохраняеться как 002.jpg и так далее по счетчику.При этом главное чтоб TC у меня ничего не спрашивал,а сразу сохранял файл с новым именем.Пакетное переименовывание не подходит так как исходные файлы раскиданы по разным папкам.И я в ручную просматрюю и копирую файл который мне нужен.Заранее благодарен!

#2:  Author: Tol!kLocation: Арзамас PostPosted: Sun May 02, 2010 18:57
    —
Первый блин:
катастрофически падает скорость при большом кол-ве файлов в целевой папке

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

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


Last edited by Tol!k on Mon May 03, 2010 13:40; edited 6 times in total

#3:  Author: Andrey_ALocation: Сочи PostPosted: Sun May 02, 2010 21:03
    —
Код работает, а если хочется сохранять не 00001, 00002... , а
Изображение_001, Изображение_002.... т.е. если в коде был бы третий параметр, куда вставлять начальное имя, было бы здорово

#4:  Author: Tol!kLocation: Арзамас PostPosted: Sun May 02, 2010 21:46
    —
Сделал необязательный третий параметр. Код во втором посте.

#5:  Author: Andrey_ALocation: Сочи PostPosted: Mon May 03, 2010 00:39
    —
Спасибо работает! В первом посте речь шла о файлах, но в название общее. Почему бы и для папок не сделать то же самое

#6:  Author: Tol!kLocation: Арзамас PostPosted: Mon May 03, 2010 01:29
    —
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

#7:  Author: Andrey_ALocation: Сочи PostPosted: Mon May 03, 2010 04:49
    —
Tol!k спасибо! Ещё одна просьба, у меня в папке приёмнике ведётся несколько списков по именам. Т.е. если файл с именем Info, то он записывается как Info_0001, (проверяется твоим скриптом) Info_0002... Но там ещё и другие файлы записываются подобным образом txt_0001..., ini_0001.. Если добавить третий параметр %O, то поодиночке добавлять файлы\папки можно, а при выделении сравнение происходит по одному имени. Можно ли рассмотреть третий параметр %F.
Может запутанно, но вот как частный вариант этого: параметры скрипта %L %p %F - копируют файлы и папки в ту же панель с проверкой нет ли подобного имени и добавлением 000N+1

#8:  Author: Tol!kLocation: Арзамас PostPosted: Mon May 03, 2010 10:11
    —
Не понял. Давай примеры, что было и что должно получиться.

#9:  Author: Andrey_ALocation: Сочи PostPosted: Mon May 03, 2010 12:16
    —
Есть папка приёмник, в которой уже находятся файлы и папки:
Музыка_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

#10:  Author: Tol!kLocation: Арзамас PostPosted: Mon May 03, 2010 13:46
    —
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

#11:  Author: Andrey_ALocation: Сочи PostPosted: Mon May 03, 2010 13:58
    —
Огромное спасибо Tol!k! Спасибо за скорость. Остался маленький вопрос. Вылетающее окно командной строки можно ли как-то скрыть или в фоне организовать.

#12:  Author: Tol!kLocation: Арзамас PostPosted: Mon May 03, 2010 14:05
    —
В настройках кнопки есть галка "в свёрнутом виде"

#13:  Author: Andrey_ALocation: Сочи PostPosted: Mon May 03, 2010 14:25
    —
Вот за этот совет Tol!k тебе отдельное спасибо! Тоталом пользуюсь примерно 4-5 лет, а этой кнопкой никогда не использовал, теперь буду знать!!!

#14:  Author: Tol!kLocation: Арзамас PostPosted: Mon May 03, 2010 16:15
    —
+ Добавил проверку переполнения счётчика.
Раньше после №9999 создавался №0000, а затем обработка аварийно прерывалась с сообщением о переполнении стека.

#15:  Author: ask-rusLocation: Russian Federation PostPosted: Mon May 02, 2011 11:44
    —
Кнопка:
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)"



Total Commander -> Автоматизация Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page 1, 2, 3 ... 11, 12, 13  Next  :| |:
Page 1 of 13

Powered by phpBB © 2001, 2005 phpBB Group