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 

Переименование папок по именам PSD-файлов в них

 
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы printer-friendly view
View previous topic :: View next topic  
Author Message
Xunya



Joined: 24 Oct 2016
Posts: 2

Post (Separately) Posted: Mon Oct 24, 2016 14:16    Post subject: Переименование папок по именам PSD-файлов в них Reply with quote

С TotalCommander я на "вы", потому обычно им не пользуюсь. Но встала весьма непростая (для меня) задача. Может, на этом форуме кто подскажет решение. Rolling Eyes
Есть несколько сотен папок с бессмысленными названиями (типа: 54fs362dr) в каждой папке по несколько файлов, файлы разные, но обязательно в каждой папке присутствует файл с одним и тем же расширением (*.psd).
Собственно вопрос: можно ли средствами ТК переименовать каждую папку именем в ней находящегося файла psd? Файлы psd в каждой папке имеют разные имена.
Я искала ответ на свой вопрос в инете, даже качала всякие программы Renamer'ы, но такой функции нигде не нашла.
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10262
Location: Россия, Саратов

Post (Separately) Posted: Mon Oct 24, 2016 15:30    Post subject: Reply with quote

Xunya
Тем с заглавием "Групповое переименование" здесь на разных подфорумах уже, мягко говоря, не одна и не две, о недопустимости их дальнейшегно размножения тут предупреждали неоднократно.
Для начала — замечание за нарушение правил форума и переименование темы в нечто более содержательное. Решение по переносу будет принято по результатам обсуждения.
Если в каждой папке действительно ровно по одному PSD-файлу, можно, например, вывести на панель после поиска по маске все PSD-файлы в заданном массиве папок, скопировать имена этих файлов в буфер, после чего в текстовом редакторе поменять .PSD на <пусто>, а сохранённый файл-список загрузить в инструменте группового переименования теперь уже для собранных в результатах поиска имён папок, отсортированных в том же порядке и в том же количестве, что раньше PSD-файлы.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Mon Oct 24, 2016 15:58    Post subject: Reply with quote

Можно одной строчкой в консоли переименовать папки:
Code:
for /d %d in (*) do for %f in ("%d\*.psd") do ren "%d" "%~nf"

Сначала надо сделать перейти в папку с подпапками с PSD-файлами, потом открыть консоль через меню Команды и вставить туда эту строчку.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10262
Location: Россия, Саратов

Post (Separately) Posted: Mon Oct 24, 2016 16:19    Post subject: Reply with quote

MVV
Попробовал в XP. Перешёл, открыл, вставил. "Процесс не может получить доступ к файлу, так как этот файл занят другим процессом".
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Xunya



Joined: 24 Oct 2016
Posts: 2

Post (Separately) Posted: Mon Oct 24, 2016 16:35    Post subject: Reply with quote

Извините пожалуйста, Avada, за невольное нарушение правил. Впредь постараюсь быть внимательнее.
Спасибо за приведенные способы, я решила попробовать тот, что быстрее, вставила код в консоль и все получилось! Больше спасибо, MVV!!! Все получилось!!!! И все так быстро решилось, одной лишь строчкой, а я ведь мучилась с этой проблемой так долго!

Несколько папок не переименовалось, система не дала их переименовать в виду того, что другая папка уже имела это имя (оказалось, что некоторые psd имели одинаковое имя), но таких папок было меньше десяти, вручную быстро доделала. Все получилось наилучшим образом! И так быстро! Спасибо!!!!
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Mon Oct 24, 2016 23:11    Post subject: Reply with quote

Вообще не пойму, зачем консоль открывать, если можно %comspec% /c спереди дописать и вызывать хоть из кнопки, хоть из комстроки TC?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Tue Oct 25, 2016 00:40    Post subject: Reply with quote

Flasher,
Так же заклинание короче! Very Happy

Xunya,
Пожалуйста!
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Tue Oct 25, 2016 00:46    Post subject: Reply with quote

MVV
Интересно, как вызов консоли у тебя вдруг из этого заклинания выпал? Wink
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Tue Oct 25, 2016 01:42    Post subject: Reply with quote

А я могу Shift+Enter сделать в консоли тотала, и на фиг не надо %ComSpec%. Very Happy
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Tue Oct 25, 2016 02:51    Post subject: Reply with quote

В комстроке, а не консоли. Можно и так. И это уже всяко не меню "Команды".
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2571

Post (Separately) Posted: Tue Oct 25, 2016 11:43    Post subject: Reply with quote

Flasher wrote:
вызов консоли ... из этого заклинания выпал

Надо же что-то и для TC оставить Smile.

MVV
Хорошо, что задача решена, но
1) на XP у меня , как и у Avada, почему-то строка не работает,
2) рекурсия, наверное, не предусмотрена (то есть в текущем каталоге переименуются только подпапки первого уровня)?
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Tue Oct 25, 2016 13:31    Post subject: Reply with quote

В этом варианте рекурсия не поддерживается - но она и не запрашивалась.

А на XP и правда не работает. Возможно, команда for читает файлы из директории в процессе обработки, а не предварительно.


На XP у меня работает такой вариант (заодно с рекурсией):
Code:
for /f "delims=" %f in ('dir /s /b *.psd') do @ren "%~pf" "%~nf"

Или то же самое с usebackq (я всегда пишу usebackq, т.к. так нет проблем с прямым перечислением имён файлов в кавычках):
Code:
for /f "usebackq delims=" %f in (`dir /s /b *.psd`) do @ren "%~pf" "%~nf"

Но нужно иметь в виду, что если PSD есть и в папке, и в подпапке, то подпапка скорее всего не переименуется, т.к. верхняя папка будет переименована ранее. Впрочем, повторный вызов команды переименует уже вложенную папку.

Ещё есть вариант сначала выдать список путей файлов во временный файл и потом второй командой пройтись по нему.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2571

Post (Separately) Posted: Tue Oct 25, 2016 14:38    Post subject: Reply with quote

MVV wrote:
но она и не запрашивалась
Но она (рекурсия) и не отрицалась.

MVV wrote:
работает такой вариант (заодно с рекурсией)
Теперь тоже работает, но, как верно замечено, без рекурсии, если PSD есть и в папке, и в подпапке. Потребуется некоторое число повторных вызовов, зависящее от глубины иерархии.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Tue Oct 25, 2016 15:05    Post subject: Reply with quote

Повторы - это плохо. Логичней было бы смотреть сразу в каждый переименованный каталог или начинать от дальней глубины до корневой, т.е. в обратном направлении. Но для таких штук уже нормальный скрипт нужен.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Tue Oct 25, 2016 18:45    Post subject: Reply with quote

sa wrote:
Теперь тоже работает, но, как верно замечено, без рекурсии

Всё же рекурсия есть - вложенные папки в принципе обрабатываются, и повторный запуск не понадобится, если во вложенных друг в друга папках нет PSD-файлов.

А чтобы избежать повторных запусков, надо придумать, как обработать список в обратном порядке. Smile
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы All times are GMT + 4 Hours
Page 1 of 1

 
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