YuS_2, спасибо.
Опробовал. Так убираются из имен все __MY, которые встречаются в любом количестве не только как суффикс, но и в любом месте *-части имени.
Но мне (как вариант) это подходит, т.к. в моем (частном) случае 1 шт. __MY и только как суффикс, т.е. ничего лишнего не удалится.
И компактно!
CMD/BAT - [решено] Переименование папок по маске
-
YuS_2
Re: CMD/BAT - [решено] Переименование папок по маске
Цитата dassen:
не только как суффикс, но и в любом месте
Это да, так работает замена в cmd.
Но если надо что-то более точное, то присмотреться необходимо к powershell и регэкспам, с ними всё гораздо проще решается.
не только как суффикс, но и в любом месте
CMD/BAT - [решено] Переименование папок по маске
Это да, так работает замена в cmd.
Но если надо что-то более точное, то присмотреться необходимо к powershell и регэкспам, с ними всё гораздо проще решается.
-
megaloman
Re: CMD/BAT - [решено] Переименование папок по маске
dassen, Если Вам всё равно, в каком месте убивается __My, если надо чтобы кратко (что мне совсем не нравится, удобнее иметь легко настраиваемый код):
Код:
Если только удалить, красные строки убираем
Если добавить (при этом чтобы суффиксы не дублировались, сначала их удаляем) - оставляем все строки
И, чтобы совсем кратко, убиваем строки с Rem
При использовании
setlocal enabledelayedexpansion
будут проблемы с именами папок, если в именах есть "!"
Код:
Код: Выделить всё
@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
будут проблемы с именами папок, если в именах есть "!"
-
dassen
Re: CMD/BAT - [решено] Переименование папок по маске
megaloman, спасибо.
Цитата megaloman:
При использовании
setlocal enabledelayedexpansion
будут проблемы с именами папок, если в именах есть "!"
Проверил... Проблемы - не то слово:
"!" в имени - и имя папки просто не обрабатывается (мне пока среди моих F-LDR*такие не попадались, но кто знает...)
Цитата megaloman:
кратко (что мне совсем не нравится, удобнее иметь легко настраиваемый код)
Да мне всего лишь нужна раз-навсегда написанная (и лучше единственная) строка для "удалить", которую я добавлю в мой "рабочий" батник. Корректирую свои требования: пусть она сносит все __MY, где бы она их ни нашла (ведь найдет она их только как суффиксы). И, по-моему, Ваш крайний вариант идеален.
А что касается "добавить" - здесь я за краткостью не гонюсь, и вопросы у меня еще будут (не сегодня).
Цитата megaloman:
При использовании
setlocal enabledelayedexpansion
будут проблемы с именами папок, если в именах есть "!"
CMD/BAT - [решено] Переименование папок по маске
Проверил... Проблемы - не то слово:
"!" в имени - и имя папки просто не обрабатывается (мне пока среди моих F-LDR*такие не попадались, но кто знает...)
Цитата megaloman:
кратко (что мне совсем не нравится, удобнее иметь легко настраиваемый код)
CMD/BAT - [решено] Переименование папок по маске
Да мне всего лишь нужна раз-навсегда написанная (и лучше единственная) строка для "удалить", которую я добавлю в мой "рабочий" батник. Корректирую свои требования: пусть она сносит все __MY, где бы она их ни нашла (ведь найдет она их только как суффиксы). И, по-моему, Ваш крайний вариант идеален.
А что касается "добавить" - здесь я за краткостью не гонюсь, и вопросы у меня еще будут (не сегодня).
-
kolob204
Re: CMD/BAT - [решено] Переименование папок по маске
А как рекурсивно по всем подкаталогам пройтись таким переименованием?
-
kolob204
Re: CMD/BAT - [решено] Переименование папок по маске
Код:
Код: Выделить всё
@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