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 

Массовое переименовывание файлов в подкаталогах
Goto page 1, 2  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
deniel87



Joined: 02 May 2010
Posts: 3

Post (Separately) Posted: Sun May 30, 2010 17:40    Post subject: Массовое переименовывание файлов в подкаталогах Reply with quote

Доброго дня.Нужно решить вот такую задачку.Имееться папка допустим [FILES] в этой папке находяться подпапки вида 0001,0002,0003....0999.В каждой из этих подпапок содержиться некоторое количество файлов (от 10 до 30).Нужно переименовать файлы в каждой подпапке по счетчику.

ПРИМЕР

FILES/0001/01.txt
FILES/0001/02.txt
FILES/0001/03.txt
и т.д


FILES/0002/01.txt
FILES/0002/02.txt
FILES/0002/03.txt
и т.д

в каждой папке нумерация файлов должна быть 01,02,03...и т.д

прблема в том что все программы которыми я пробовал переименовывать отказывались работать с подкаталогами.Можно конечно использовать груповое переименовывание в TС, но в ручную 1000 папок как то долговато будет)))Надеюсь суть вопроса понятна.Заранее спасибо.
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2584
Location: Большая деревня Москва

Post (Separately) Posted: Sun May 30, 2010 19:44    Post subject: Reply with quote

Про имена исходных файлов ничего не сказано. Допустим, что они имеют одинаковые имена в разных директориях:
Code:
FILES/0001/a.txt
FILES/0001/b.txt
FILES/0001/c.txt
тогда задача легко решается батником
Code:
ren a.txt 001.txt
ren b.txt 002.txt
Затем через команду for в батнике сделать обход всех директорий и в каждой выполнить данный набор команд. Ничего лучше в голову не приходит. Попробовал поиграться с вложенными командами for, но ничего не получилось.
Подожди, скоро придет Tol!k и напишет тебе батник.
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sun May 30, 2010 20:01    Post subject: Reply with quote

deniel87 wrote:
Можно конечно использовать груповое переименовывание в TС, но в ручную 1000 папок как то долговато будет)
Хм. А дерево на что? Ctrl+F8, выделил нужные папки и понеслась. Wink
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2584
Location: Большая деревня Москва

Post (Separately) Posted: Sun May 30, 2010 20:25    Post subject: Reply with quote

По-моему, директории ему-то как раз переименовывать не надо. Дерево здесь не поможет. И вообще, выделение директорий к дереву отношения не имеет. Или я чего-то не понял?
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Sun May 30, 2010 21:25    Post subject: Reply with quote

Flasher, нужна не сквозная нумерация, а "в каждой папке нумерация файлов должна быть 01,02,03..."

Last edited by Tol!k on Sun May 30, 2010 21:27; edited 1 time in total
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sun May 30, 2010 21:25    Post subject: Reply with quote

Что-то меня и правда не туда понесло. Ctrl+Shift+B в дереве всё равно не сработает по понятным причинам, хотя Гислеру бы не мешало предложить, чтобы по некой команде, например, cm_DirBranchTreeSel и по клавише Ctrl+Alt+B все файлы из выделенных папок выводились в другой панели.
Жаль, что папок так много, в строке поиска не поместятся. Но на всякий предлагаю выделить в дереве папки, сохранить выделение в файл, а потом либо Batya, либо Tol'k свояют скрипт, тем более, что на форуме списки обрабатывались ими не единожды. Например, тут, тут, где-то ещё есть..
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Sun May 30, 2010 21:52    Post subject: Reply with quote

О, так всё ж уже написано! Flasher, где ты был раньше, я успел батник написать Evil or Very Mad
deniel87
заменяешь в скрипте
Code:
Const Precision = 2
и
Code:
'      NewName = G & Delimiter & P & Delimiter & GeneralWord & Delimiter & Num(Counter(PF), Precision) & Ext
       NewName = Num(Counter(PF), Precision) & Ext

жмёшь Ctrl+B, выделяешь файлы;
нажимаешь кнопку и выпиваешь за здоровье Бати
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sun May 30, 2010 22:45    Post subject: Reply with quote

Tol!k wrote:
жмёшь Ctrl+B, выделяешь файлы; нажимаешь кнопку
А если вложенность разная, и файлы не из всех подкаталогов надо обрабатывать, то как быть?
Tol!k wrote:
Flasher, где ты был раньше, я успел батник написать Evil or Very Mad
На сколько? На пол секунды? Laughing
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Sun May 30, 2010 23:00    Post subject: Reply with quote

Flasher wrote:
А если вложенность разная, и файлы не из всех подкаталогов надо обрабатывать, то как быть?
В запросе ничего про выборочное переименование, а с разной вложенностью скрипт справляется.
Tol!k wrote:
На пол секунды? Laughing
Да я на себя злой, что делал бесполезную работу. Ну ты понял Smile
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sun May 30, 2010 23:29    Post subject: Reply with quote

Tol!k wrote:
В запросе ничего про выборочное переименование, а с разной вложенностью скрипт справляется.
Пока да, ну вот, допустим, я поставил. Нужно файлы, находящиеся в разных по вложенности подкаталогах, например, выделенные выборочно в дереве, переименовывать с учётом предложенного алгоритма.
Tol!k wrote:
Ну ты понял
Само собой. Wink
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: 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
Back to top
View user's profile Send private message
deniel87



Joined: 02 May 2010
Posts: 3

Post (Separately) Posted: Mon May 31, 2010 01:15    Post subject: Reply with quote

Спасибо Tol!k второй скрипт самое оно!
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Mon May 31, 2010 13:41    Post subject: Reply with quote

Изменение: теперь при работе не создаётся временный файл
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon May 31, 2010 14:58    Post subject: Reply with quote

Tol!k
Вот и не бесполезная вовсе работа оказалась. Работает чётко! Молоток! Smile
Но вот чего бы ещё хотелось, так это переименования файлов во вложенных на разную глубину подкаталогах, если при этом выделен (помимо всех прочих) только корневой. Сделаешь? Rolling Eyes
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Tue Jun 01, 2010 13:02    Post subject: Reply with quote

+ Доп. параметр /S – переименовывать файлы во вложенных папках
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group