CMD/BAT - [решено] Переименование папок по маске

Аватара пользователя
YuS_2

Re: CMD/BAT - [решено] Переименование папок по маске

Сообщение YuS_2 »

YuS_2, спасибо.

Опробовал. Так убираются из имен все __MY, которые встречаются в любом количестве не только как суффикс, но и в любом месте *-части имени.

Но мне (как вариант) это подходит, т.к. в моем (частном) случае 1 шт. __MY и только как суффикс, т.е. ничего лишнего не удалится.

И компактно!
Аватара пользователя
YuS_2

Re: CMD/BAT - [решено] Переименование папок по маске

Сообщение YuS_2 »

Цитата dassen:



не только как суффикс, но и в любом месте
CMD/BAT - [решено] Переименование папок по маске




Это да, так работает замена в cmd.

Но если надо что-то более точное, то присмотреться необходимо к powershell и регэкспам, с ними всё гораздо проще решается.
Аватара пользователя
megaloman

Re: CMD/BAT - [решено] Переименование папок по маске

Сообщение megaloman »

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

будут проблемы с именами папок, если в именах есть "!"
Аватара пользователя
dassen

Re: CMD/BAT - [решено] Переименование папок по маске

Сообщение dassen »

megaloman, спасибо.


Цитата megaloman:



При использовании

setlocal enabledelayedexpansion

будут проблемы с именами папок, если в именах есть "!"
CMD/BAT - [решено] Переименование папок по маске




Проверил... Проблемы - не то слово:

"!" в имени - и имя папки просто не обрабатывается (мне пока среди моих F-LDR*такие не попадались, но кто знает...)


Цитата megaloman:



кратко (что мне совсем не нравится, удобнее иметь легко настраиваемый код)
CMD/BAT - [решено] Переименование папок по маске




Да мне всего лишь нужна раз-навсегда написанная (и лучше единственная) строка для "удалить", которую я добавлю в мой "рабочий" батник. Корректирую свои требования: пусть она сносит все __MY, где бы она их ни нашла (ведь найдет она их только как суффиксы). И, по-моему, Ваш крайний вариант идеален.

А что касается "добавить" - здесь я за краткостью не гонюсь, и вопросы у меня еще будут (не сегодня).
Аватара пользователя
kolob204

Re: CMD/BAT - [решено] Переименование папок по маске

Сообщение kolob204 »

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

Re: CMD/BAT - [решено] Переименование папок по маске

Сообщение kolob204 »

Код:

Код: Выделить всё

@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
Ответить

Вернуться в «Скриптовые языки администрирования Windows»