PDA

Показать полную графическую версию : [решено] Замена символов [ и ] на ( и ) в имени папки


DenchikK
01-07-2023, 22:04
Очень часто есть нужда замены квадратных скобок на круглые в именах папок.
Сейчас я пользую Тотал Коммандер: выделение нужных каталогов, Ctrl M, Поиск и Замена, вбиваю [ и (, потом ещё раз выделяю, Ctrl M, Поиск и Замена, вбиваю ] и ).
Очень сильно напрягает уже, хочется как то автоматизировать сей процесс. Хоть через cmd/bat, хоть через ps1, хоть через vbs.
Целый день гуглю, но получается так делать либо для имён файлов, либо для имен папок не содержащих символы []().
Пытался как-то экранировать символы, конвертировал в юникод - но видимо делаю не так, как надо.
Прошу помощи коллективного разума!

NickM
01-07-2023, 22:48
Что-нибудь типа такого?
powershell -c "Get-ChildItem * -recurse -directory | Rename-Item -NewName { $_.Name.Replace('[','(').Replace(']',')') }"

DenchikK
02-07-2023, 00:00
Что-нибудь типа такого? »
Великолепно! Спасибо!

YuS_2
02-07-2023, 12:06
NickM, только надо подкорректировать:
Get-ChildItem * -recurse -directory -force|? Name -match '\[|\]'|sort fullname -d| Rename-Item -NewName { $_.Name.Replace('[','(').Replace(']',')') } -force
иначе:
1. со вложенными каталогами могут возникнуть проблемы (останутся не переименованными), в процессе переименования.
Поясню:
Если переименовывается родительский каталог, то уже дочерние, стоящие в очереди, переименованы не будут, т.к. путь уже не будет существовать. В этом случае поможет многократный запуск... или сортировка
2. как минимум, скрытые не будут переименованы...
3. без проверки на наличие заменяемых символов, будут вызываться исключения.

DenchikK
02-07-2023, 20:39
только надо подкорректировать: »
У меня, почему-то, так не работает. А команда NickM срабатывает.

YuS_2
03-07-2023, 07:53
У меня, почему-то, так не работает. »
Наверное, powershell надо обновить (а лучше сразу powershell Core использовать), тогда будет работать...




© OSzone.net 2001-2012