Tol!k

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