Массовое переименовывание файлов в подкаталогах
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
Массовое переименовывание файлов в подкаталогах
Доброго дня.Нужно решить вот такую задачку.Имееться папка допустим [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 папок как то долговато будет)))Надеюсь суть вопроса понятна.Заранее спасибо.
ПРИМЕР
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 папок как то долговато будет)))Надеюсь суть вопроса понятна.Заранее спасибо.
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
Про имена исходных файлов ничего не сказано. Допустим, что они имеют одинаковые имена в разных директориях:тогда задача легко решается батникомЗатем через команду for в батнике сделать обход всех директорий и в каждой выполнить данный набор команд. Ничего лучше в голову не приходит. Попробовал поиграться с вложенными командами for, но ничего не получилось.
Подожди, скоро придет Tol!k и напишет тебе батник.
Код: Выделить всё
FILES/0001/a.txt
FILES/0001/b.txt
FILES/0001/c.txtКод: Выделить всё
ren a.txt 001.txt
ren b.txt 002.txtПодожди, скоро придет Tol!k и напишет тебе батник.
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
По-моему, директории ему-то как раз переименовывать не надо. Дерево здесь не поможет. И вообще, выделение директорий к дереву отношения не имеет. Или я чего-то не понял?
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Flasher, нужна не сквозная нумерация, а "в каждой папке нумерация файлов должна быть 01,02,03..."
Последний раз редактировалось Tol!k Вс май 30, 2010 21:27, всего редактировалось 1 раз.
Что-то меня и правда не туда понесло. Ctrl+Shift+B в дереве всё равно не сработает по понятным причинам, хотя Гислеру бы не мешало предложить, чтобы по некой команде, например, cm_DirBranchTreeSel и по клавише Ctrl+Alt+B все файлы из выделенных папок выводились в другой панели.
Жаль, что папок так много, в строке поиска не поместятся. Но на всякий предлагаю выделить в дереве папки, сохранить выделение в файл, а потом либо Batya, либо Tol'k свояют скрипт, тем более, что на форуме списки обрабатывались ими не единожды. Например, тут, тут, где-то ещё есть..
Жаль, что папок так много, в строке поиска не поместятся. Но на всякий предлагаю выделить в дереве папки, сохранить выделение в файл, а потом либо Batya, либо Tol'k свояют скрипт, тем более, что на форуме списки обрабатывались ими не единожды. Например, тут, тут, где-то ещё есть..
О, так всё ж уже написано! Flasher, где ты был раньше, я успел батник написать 
deniel87
заменяешь в скриптеи
жмёшь Ctrl+B, выделяешь файлы;
нажимаешь кнопку и выпиваешь за здоровье Бати
deniel87
заменяешь в скрипте
Код: Выделить всё
Const Precision = 2Код: Выделить всё
' NewName = G & Delimiter & P & Delimiter & GeneralWord & Delimiter & Num(Counter(PF), Precision) & Ext
NewName = Num(Counter(PF), Precision) & Extнажимаешь кнопку и выпиваешь за здоровье Бати
Пока да, ну вот, допустим, я поставил. Нужно файлы, находящиеся в разных по вложенности подкаталогах, например, выделенные выборочно в дереве, переименовывать с учётом предложенного алгоритма.Tol!k писал(а):В запросе ничего про выборочное переименование, а с разной вложенностью скрипт справляется.
Само собой.Tol!k писал(а):Ну ты понял
ПробуйFlasher писал(а):Нужно файлы, находящиеся в разных по вложенности подкаталогах, например, выделенные выборочно в дереве, переименовывать с учётом предложенного алгоритма.
Код: Выделить всё
@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].* остаются без изменения (в отличии от Батиного скрипта)
Последний раз редактировалось Tol!k Вт июн 01, 2010 13:01, всего редактировалось 3 раза.