![]() |
Переименование папок по маске
Есть папки с именами F-LDR*. Нужно добавить к их именам суффикс __MY, т.е. привести к виду F-LDR*__MY.
И противоположная задача (более важная): Есть папки с именами F-LDR*__MY. Нужно убрать из их имен суффикс __MY, т.е. привести к виду F-LDR*. (ReNamer такое делает, в т.ч. и с папками, но хотелось бы то же выполнять из пакетного файла - быстрее и удобнее). Интересует только CMD/BAT. Все папки непустые, будут лежать в одном каталоге и на одном уровне с требующимся батником; подпапки не трогать. (Гуглил, но ничего подобного для папок не нашел... Если возможно, научите. Спасибо!) |
С такой постановкой задачи:
Цитата:
Цитата:
Код:
for /f "delims=" %%i in ('dir /b/ad "F-LDR<"') do echo ren "%%~i" "%%~i__MY" обратное действие, тоже можно накидать подобным способом, через цикл, только имена каталогов придется передавать через промежуточную переменную и затем, заменой удалять ненужные символы, примерно так: Код:
... do ( ЗЫ Но возникает закономерный вопрос: Вам шашечки или ехать? Лучше изучайте повершелл, в нем многое гораздо проще делать... :) |
Цитата:
Цитата:
|
Цитата:
К тому же, в условии не сказано, что там уже присутствуют каталоги с суффиксами... :) Цитата:
|
YuS_2, спасибо!
Цитата:
Цитата:
Цитата:
Другими словами, на сегодняшнй день очень интересует: Цитата:
Цитата:
|
Цитата:
dassen, что делать, если есть, например, и каталог F-LDR003, и каталог F-LDR003__MY? There.cmd
Код:
@echo off Back Again.cmd
Код:
@echo off |
Немного помыслил... :lamer:
В принципе, мне все равно, каким суффиксом изначально было для себя метить папки F-LDR*. Главное - чтобы можно было в нужный момент этот суффикс отбросить. И если использовать суффикс Код:
.__MY Код:
__MY Код:
for /f %%i in ('dir /b/ad "F-LDR*.__MY"') do ren "%%i" "%%~ni" Необычно? Но работает. Может, что-то "по-грамотному" подправить/добавить? ;) "А можно такое же, но без точки?" :) P.S. Отправил это сообщение еще до того, как обнаружил, что уже есть предыдущее от Iska. Прошу учесть... |
Iska, спасибо! Именно то, что требовалось! :laiel:
Цитата:
к F-LDR* добавлять суффикс __MY к F-LDR*__MY еще один суффикс __MY добавлять не нужно. P.S. Если бы прочитал Ваше сообщение до написания своего Цитата:
|
Удаление суффикса
Код:
@Echo Off Добавление суффикса
Код:
@Echo Off Цитата:
Цитата:
|
Цитата:
Код:
for /f "delims=" %%i in ('dir /b/ad "F-LDR<"') do echo ren "%%~i" "%%~i__MY" Код:
@echo off |
YuS_2, спасибо.
Опробовал. Так убираются из имен все __MY, которые встречаются в любом количестве не только как суффикс, но и в любом месте *-части имени. Но мне (как вариант) это подходит, т.к. в моем (частном) случае 1 шт. __MY и только как суффикс, т.е. ничего лишнего не удалится. И компактно! |
Цитата:
Но если надо что-то более точное, то присмотреться необходимо к powershell и регэкспам, с ними всё гораздо проще решается. |
dassen, Если Вам всё равно, в каком месте убивается __My, если надо чтобы кратко (что мне совсем не нравится, удобнее иметь легко настраиваемый код):
Код:
@Echo Off Если добавить (при этом чтобы суффиксы не дублировались, сначала их удаляем) - оставляем все строки И, чтобы совсем кратко, убиваем строки с Rem При использовании setlocal enabledelayedexpansion будут проблемы с именами папок, если в именах есть "!" |
megaloman, спасибо.
Цитата:
"!" в имени - и имя папки просто не обрабатывается (мне пока среди моих F-LDR*такие не попадались, но кто знает...) Цитата:
А что касается "добавить" - здесь я за краткостью не гонюсь, и вопросы у меня еще будут (не сегодня). |
А как рекурсивно по всем подкаталогам пройтись таким переименованием?
|
Код:
@Echo Off |
Время: 10:31. |
Время: 10:31.
© OSzone.net 2001-