Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Переименование папок по маске

Ответить
Настройки темы
CMD/BAT - [решено] Переименование папок по маске

Новый участник


Сообщения: 30
Благодарности: 1

Профиль | Отправить PM | Цитировать


Изменения
Автор: dassen
Дата: 07-01-2019
Есть папки с именами F-LDR*. Нужно добавить к их именам суффикс __MY, т.е. привести к виду F-LDR*__MY.
И противоположная задача (более важная):
Есть папки с именами F-LDR*__MY. Нужно убрать из их имен суффикс __MY, т.е. привести к виду F-LDR*.
(ReNamer такое делает, в т.ч. и с папками, но хотелось бы то же выполнять из пакетного файла - быстрее и удобнее).
Интересует только CMD/BAT.
Все папки непустые, будут лежать в одном каталоге и на одном уровне с требующимся батником; подпапки не трогать.
(Гуглил, но ничего подобного для папок не нашел... Если возможно, научите. Спасибо!)

Отправлено: 00:15, 07-01-2019

 

Новый участник


Сообщения: 30
Благодарности: 1

Профиль | Отправить PM | Цитировать


YuS_2, спасибо.
Опробовал. Так убираются из имен все __MY, которые встречаются в любом количестве не только как суффикс, но и в любом месте *-части имени.
Но мне (как вариант) это подходит, т.к. в моем (частном) случае 1 шт. __MY и только как суффикс, т.е. ничего лишнего не удалится.
И компактно!

Отправлено: 14:53, 07-01-2019 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1171
Благодарности: 487

Профиль | Отправить PM | Цитировать


Цитата dassen:
не только как суффикс, но и в любом месте »
Это да, так работает замена в cmd.
Но если надо что-то более точное, то присмотреться необходимо к powershell и регэкспам, с ними всё гораздо проще решается.

-------
scio me nihil scire. Ѫ


Отправлено: 15:33, 07-01-2019 | #12


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


dassen, Если Вам всё равно, в каком месте убивается __My, если надо чтобы кратко (что мне совсем не нравится, удобнее иметь легко настраиваемый код):
Код: Выделить весь код
@Echo Off
rem Удалить
FOR /F "usebackq delims=" %%d IN (`2^>nul Dir "F-LDR*__My.*" /B /A:D`) DO Set "N=%%d" &Call Ren "%%d" "%%N:__My=%%"
rem Добавить
FOR /F "usebackq delims=" %%d IN (`2^>nul Dir "F-LDR*.*" /B /A:D`) Do Ren "%%d" "%%~nd__My%%~xd"
Если только удалить, красные строки убираем
Если добавить (при этом чтобы суффиксы не дублировались, сначала их удаляем) - оставляем все строки
И, чтобы совсем кратко, убиваем строки с Rem
При использовании
setlocal enabledelayedexpansion
будут проблемы с именами папок, если в именах есть "!"

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 07-01-2019 в 16:21.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:05, 07-01-2019 | #13


Новый участник


Сообщения: 30
Благодарности: 1

Профиль | Отправить PM | Цитировать


megaloman, спасибо.
Цитата megaloman:
При использовании
setlocal enabledelayedexpansion
будут проблемы с именами папок, если в именах есть "!" »
Проверил... Проблемы - не то слово:
"!" в имени - и имя папки просто не обрабатывается (мне пока среди моих F-LDR*такие не попадались, но кто знает...)
Цитата megaloman:
кратко (что мне совсем не нравится, удобнее иметь легко настраиваемый код) »
Да мне всего лишь нужна раз-навсегда написанная (и лучше единственная) строка для "удалить", которую я добавлю в мой "рабочий" батник. Корректирую свои требования: пусть она сносит все __MY, где бы она их ни нашла (ведь найдет она их только как суффиксы). И, по-моему, Ваш крайний вариант идеален.
А что касается "добавить" - здесь я за краткостью не гонюсь, и вопросы у меня еще будут (не сегодня).

Последний раз редактировалось dassen, 07-01-2019 в 21:22.


Отправлено: 17:24, 07-01-2019 | #14


Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Отправить PM | Цитировать


А как рекурсивно по всем подкаталогам пройтись таким переименованием?

Отправлено: 13:40, 13-05-2020 | #15


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@Echo Off
	Call :DelSuff "Z:\Box_In\F-LDR*__My.*" "__My"
	Call :AddSuff  "Z:\Box_In\F-LDR*.*" "__My"
Exit /B

:DelSuff
	FOR /F "usebackq delims=" %%d IN (`2^>nul Dir %1 /S /B /A:D ^|Sort /R`) DO (
		Set "N=%%~nd" &Call Ren "%%d" "%%N:__My=%%%%~xd"
	)
Exit /B

:AddSuff
	FOR /F "usebackq delims=" %%d IN (`2^>nul Dir %1 /S /B /A:D ^|Sort /R`) DO (
		Call Ren "%%d" "%%~nd%~2%%~xd"
	)
Exit /B

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 13-05-2020 в 16:47.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:25, 13-05-2020 | #16



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Переименование папок по маске

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Переименование файла по маске. Damien_here Скриптовые языки администрирования Windows 5 13-06-2017 12:51
CMD/BAT - Пакетное переименование файлов по маске Viktor99 Скриптовые языки администрирования Windows 1 15-08-2016 23:25
CMD/BAT - [решено] Переименование имени файла по маске Дмитрий_Кульгейко@vk Скриптовые языки администрирования Windows 10 12-07-2016 20:15
CMD/BAT - Переименование фалов по маске mych_man Скриптовые языки администрирования Windows 19 01-06-2016 15:00
CMD/BAT - Переименование файлов по маске tobornforlife@vk Скриптовые языки администрирования Windows 5 24-02-2014 17:07




 
Переход