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: Mon May 31, 2010 00:00    Post subject: Reply with quote

Flasher wrote:
Нужно файлы, находящиеся в разных по вложенности подкаталогах, например, выделенные выборочно в дереве, переименовывать с учётом предложенного алгоритма.
Пробуй
Code:
@echo off &chcp 1251 >nul &setlocal enableextensions

rem  Файлы, находящиеся в папках, например, выделенных выборочно в дереве,
rem  переименовываются по счётчику [0-9][0-9].*
rem  Счётчик начинается с 01 в каждой папке.
rem  Файлы подходящие под маску [0-9][0-9].* остаются без изменения.
rem  Параметры: список_папок /S
rem    /S – переименовывать файлы во вложенных папках
rem  Пример параметров при вызове из TC: %L
rem  Автор: Tol!k

for /f "usebackq delims=" %%d in ("%~1") do call :d "%%d"
if /i "%~2"=="/s" for /f "delims=" %%d in (
'for /f "usebackq delims=" %%s in ^("%~1"^) do @dir /s/b/ad "%%s"'
) do call :d "%%d"
goto :eof

:d
set /a cnt=0
for /f "delims=" %%f in ('dir /b/a-d/on "%~1" ^|^
findstr /v /i /r /b /e /c:"[0-9][0-9]\.[^^\.]*"') do call :f "%~1\%%f"
goto :eof

:f
set /a cnt+=1
if "%cnt%"=="100" (title STOP &echo Досчитали до 100. &pause >nul &exit)
set "name=0%cnt%"
set "name=%name:~-2%"
ren %1 "%name%%~x1" 2>nul &&title %name% "%~dp1" ||call :f %1
goto :eof

Выделять нужно папки, а не файлы.
Файлы подходящие под маску [0-9][0-9].* остаются без изменения (в отличии от Батиного скрипта)


Last edited by Tol!k on Tue Jun 01, 2010 13:01; edited 3 times in total
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group