|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Переименование папок по маске |
|
|
CMD/BAT - [решено] Переименование папок по маске
|
Новый участник Сообщения: 34 |
Есть папки с именами F-LDR*. Нужно добавить к их именам суффикс __MY, т.е. привести к виду F-LDR*__MY.
И противоположная задача (более важная): Есть папки с именами F-LDR*__MY. Нужно убрать из их имен суффикс __MY, т.е. привести к виду F-LDR*. (ReNamer такое делает, в т.ч. и с папками, но хотелось бы то же выполнять из пакетного файла - быстрее и удобнее). Интересует только CMD/BAT. Все папки непустые, будут лежать в одном каталоге и на одном уровне с требующимся батником; подпапки не трогать. (Гуглил, но ничего подобного для папок не нашел... Если возможно, научите. Спасибо!) |
|
Отправлено: 00:15, 07-01-2019 |
Crazy Сообщения: 1227
|
Профиль | Отправить PM | Цитировать С такой постановкой задачи:
Цитата dassen:
Цитата dassen:
echo - в боевых условиях удалить. обратное действие, тоже можно накидать подобным способом, через цикл, только имена каталогов придется передавать через промежуточную переменную и затем, заменой удалять ненужные символы, примерно так: восклицательный знак тут не случайно, ибо внутри скобок придется использовать отложенное раскрытие... ну или использовать вызов call и стандартное %-раскрытие... ЗЫ Но возникает закономерный вопрос: Вам шашечки или ехать? Лучше изучайте повершелл, в нем многое гораздо проще делать... ![]() |
||
------- Последний раз редактировалось YuS_2, 07-01-2019 в 08:13. Отправлено: 08:07, 07-01-2019 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
Колитесь, коллега, откуда брали про «<» в маске, и что он даёт? |
|
Отправлено: 08:48, 07-01-2019 | #3 |
Crazy Сообщения: 1227
|
Профиль | Отправить PM | Цитировать Цитата Iska:
К тому же, в условии не сказано, что там уже присутствуют каталоги с суффиксами... ![]() Цитата Iska:
![]() |
||
------- Отправлено: 09:29, 07-01-2019 | #4 |
Новый участник Сообщения: 34
|
Профиль | Отправить PM | Цитировать YuS_2, спасибо!
Цитата YuS_2:
![]() Цитата dassen:
Цитата YuS_2:
Другими словами, на сегодняшнй день очень интересует: Цитата dassen:
Цитата YuS_2:
![]() |
||||||
Отправлено: 10:29, 07-01-2019 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
![]() dassen, что делать, если есть, например, и каталог F-LDR003, и каталог F-LDR003__MY? There.cmd
@echo off setlocal enableextensions enabledelayedexpansion for /f "usebackq delims=" %%i in ( `2^>nul dir /b /a:d ^| findstr.exe /i /r /c:"^F-LDR.*" ^| findstr.exe /i /v /r /c:".*__MY$"` ) do ( if not exist "%%~i__MY\." ( echo Rename folder [%%~i] into [%%~i__MY]. ren "%%~i" "%%~i__MY" ) else ( echo Can't rename folder [%%~i] into [%%~i__MY] because folder [%%~i__MY] already exists. ) ) endlocal exit /b 0 Back Again.cmd
@echo off setlocal enableextensions enabledelayedexpansion for /f "usebackq delims=" %%i in ( `2^>nul dir /b /a:d ^| findstr.exe /i /r /c:"^F-LDR.*__MY$"` ) do ( set sFolderName=%%~i set sNewFolderName=!sFolderName:~0,-4! if not exist "!sNewFolderName!\." ( echo Rename folder [%%~i] into [!sNewFolderName!]. ren "%%~i" "!sNewFolderName!" ) else ( echo Can't rename folder [%%~i] into [!sNewFolderName!] because folder [!sNewFolderName!] already exists. ) ) endlocal exit /b 0 |
|
Отправлено: 11:48, 07-01-2019 | #6 |
Новый участник Сообщения: 34
|
Профиль | Отправить PM | Цитировать Немного помыслил...
![]() В принципе, мне все равно, каким суффиксом изначально было для себя метить папки F-LDR*. Главное - чтобы можно было в нужный момент этот суффикс отбросить. И если использовать суффикс вместо , то с задачей F-LDR*.__MY to F-LDR* вполне справится этот код: (на идею натолкнул код от YuS_2 ![]() Необычно? Но работает. Может, что-то "по-грамотному" подправить/добавить? ![]() "А можно такое же, но без точки?" ![]() P.S. Отправил это сообщение еще до того, как обнаружил, что уже есть предыдущее от Iska. Прошу учесть... |
Последний раз редактировалось dassen, 07-01-2019 в 15:33. Отправлено: 12:19, 07-01-2019 | #7 |
Новый участник Сообщения: 34
|
Профиль | Отправить PM | Цитировать Iska, спасибо! Именно то, что требовалось!
![]() Цитата Iska:
к F-LDR* добавлять суффикс __MY к F-LDR*__MY еще один суффикс __MY добавлять не нужно. P.S. Если бы прочитал Ваше сообщение до написания своего Цитата dassen:
![]() |
||
Последний раз редактировалось dassen, 07-01-2019 в 20:23. Отправлено: 13:13, 07-01-2019 | #8 |
Ветеран Сообщения: 2732
|
Профиль | Отправить PM | Цитировать Удаление суффикса
@Echo Off cls Set "Pref=F-LDR" Set "Suff=__MY" Set "Ext=.*" Set "BoxIn=%~dp0" If "%BoxIn:~-1%"=="\" Set "BoxIn=%BoxIn:~0,-1%" FOR /F "usebackq delims=" %%d IN (`2^>nul Dir "%BoxIn%\%Pref%*%Suff%%Ext%" /B /A:D`) DO ( Call :MyDel "%BoxIn%\%%d" "%Suff%" ) Pause GoTo :Eof rem Удаление суффикса :MyDel Set "Name=%~n1:" Call Set "Name=%%Name:%~2:=%%" If Not "%~n1:%~x1"=="%Name%%~x1" Ren %1 "%Name%%~x1" ||(Echo Ren %1 --^> "%Name%%~x1" already exists &Echo.) GoTo :Eof Добавление суффикса
@Echo Off cls Set "Pref=F-LDR" Set "Suff=__MY" Set "Ext=.*" Set "BoxIn=%~dp0" If "%BoxIn:~-1%"=="\" Set "BoxIn=%BoxIn:~0,-1%" FOR /F "usebackq delims=" %%d IN (`2^>nul Dir "%BoxIn%\%Pref%*%Ext%" /B /A:D`) DO ( Call :MyAdd "%BoxIn%\%%d" "%Suff%" ) Pause GoTo :Eof rem Добавление суффикса если его еще нет :MyAdd Set "Name=%~n1:" Call Set "Name=%%Name:%~2:=%%" If "%~n1:%~x1"=="%Name%%~x1" Ren %1 "%~n1%~2%~x1" ||(Echo Ren %1 --^> "%~n1%~2%~x1" already exists &Echo.) GoTo :Eof Цитата dassen:
Цитата
Тестировал на наборе (туда-сюда) на папках с расширениями и без:
|
||
------- Последний раз редактировалось megaloman, 07-01-2019 в 13:35. Отправлено: 13:18, 07-01-2019 | #9 |
Crazy Сообщения: 1227
|
Профиль | Отправить PM | Цитировать Цитата dassen:
и превращаем его в такой: |
|
------- Отправлено: 13:38, 07-01-2019 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|