Копирование с переименовыванием по счетчику
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
Копирование с переименовыванием по счетчику
Здравствуйте.Можно ли реализовать такую весч в TC?Например имееться папка приемник,я перетаскиваю в нее файл ******.jpg и он сохраняеться как 001.jpg Перетаскиваю следующий файл *****.jpg и он сохраняеться как 002.jpg и так далее по счетчику.При этом главное чтоб TC у меня ничего не спрашивал,а сразу сохранял файл с новым именем.Пакетное переименовывание не подходит так как исходные файлы раскиданы по разным папкам.И я в ручную просматрюю и копирую файл который мне нужен.Заранее благодарен!
Первый блин:
катастрофически падает скорость при большом кол-ве файлов в целевой папке
Del
Не такая тормознутая версия здесь
Сохрани код в текстовый файл с расш. CMD;
создай кнопку;
выделяй файлы и нажимай кнопку
катастрофически падает скорость при большом кол-ве файлов в целевой папке
Del
Не такая тормознутая версия здесь
Сохрани код в текстовый файл с расш. CMD;
создай кнопку;
выделяй файлы и нажимай кнопку
Последний раз редактировалось Tol!k Пн май 03, 2010 13:40, всего редактировалось 6 раз.
Код: Выделить всё
@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
Последний раз редактировалось Tol!k Пн май 03, 2010 16:50, всего редактировалось 3 раза.
Tol!k спасибо! Ещё одна просьба, у меня в папке приёмнике ведётся несколько списков по именам. Т.е. если файл с именем Info, то он записывается как Info_0001, (проверяется твоим скриптом) Info_0002... Но там ещё и другие файлы записываются подобным образом txt_0001..., ini_0001.. Если добавить третий параметр %O, то поодиночке добавлять файлы\папки можно, а при выделении сравнение происходит по одному имени. Можно ли рассмотреть третий параметр %F.
Может запутанно, но вот как частный вариант этого: параметры скрипта %L %p %F - копируют файлы и папки в ту же панель с проверкой нет ли подобного имени и добавлением 000N+1
Может запутанно, но вот как частный вариант этого: параметры скрипта %L %p %F - копируют файлы и папки в ту же панель с проверкой нет ли подобного имени и добавлением 000N+1
Есть папка приёмник, в которой уже находятся файлы и папки:
Музыка_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
Музыка_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
Код: Выделить всё
@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
Последний раз редактировалось Tol!k Пн май 03, 2010 16:49, всего редактировалось 3 раза.
Кнопка:
Необходима аналогичная для создания пяти копий одного файла.
Файл "Хмурый":
- "Копия Хмурый"
- "Копия Хмурый (2)"
- "Копия Хмурый (3)"
- "Копия Хмурый (4)"
- "Копия Хмурый (5)"
Код: Выделить всё
[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)"
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица