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 

Single Post  Topic: Копирование с переименовыванием по счетчику 
Author Message
Tol!k



PostPosted: Fri Apr 13, 2012 20:33    Post subject: Reply with quote

к http://forum.wincmd.ru/viewpost.php?p=62933
добавил третий параметр — кол-во разрядов в номере (по умолч. 3)

Code:
@echo off &setlocal enableextensions &chcp 1251 >nul
rem  Копирование файлов и папок с добавлением номера
rem  Параметры: "%L" "d:\куда\" 3
rem  Автор: Tol!k
rem  http://forum.wincmd.ru/viewpost.php?p=91443

if not "%~3"=="" (set "#=%~3") else set "#=3"
setlocal enabledelayedexpansion
for /l %%i in (2,1,%#%) do (set "min=0!min!" &set "max=9!max!")
endlocal &set "min=0%min%" &set "max=9%max%"

set "trg=%~2"
for /f "delims=" %%f in ('type "%~1"') do call :p "%%f" "%%f."
goto :eof

:p
set "pre=%~n1"
if "%pre%"=="" set "pre=%~n2"
set "name=%~1" &set "ext=%~x1"
set /a n=0 &goto :%min%
:0000000000
:000000000
call :loop 100000000 &set /a n-=100000000
:00000000
call :loop 10000000 &set /a n-=10000000
:0000000
call :loop 1000000 &set /a n-=1000000
:000000
call :loop 100000 &set /a n-=100000
:00000
call :loop 10000 &set /a n-=10000
:0000
call :loop 1000 &set /a n-=1000
:000
call :loop 100 &set /a n-=100
:00
call :loop 10 &set /a n-=10
:0
call :loop 1
title "%new%"

if "%name:~-1%"=="\" (
  xcopy "%name%*" "%trg%\%new%" /i /e /k/r/h >nul
) else (
  echo f| xcopy "%name%" "%trg%\%new%" /k/r/h >nul
)
goto :eof

:loop
if "%n%"=="%max%" (
  echo %max% единиц в месте назначения,
  echo недостаточно разрядности счётчика.
  title STOP &pause >nul &exit /b 9
)
set /a n+=%1
setlocal enabledelayedexpansion
set "e=%min%%n%" &set "e=!e:~-%#%!"
endlocal &set "e=%e%"
set "new=%pre%_%e%%ext%"
if exist "%trg%\%new%" goto :loop
goto :eof

View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group