|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Переименование папки, на основе файла внутри папки |
|
CMD/BAT - [решено] Переименование папки, на основе файла внутри папки
|
Старожил Сообщения: 238 |
Профиль | Отправить PM | Цитировать
Приветствую. Нужна ваша помощь. Есть набор папок такого вида
E:\123\123\405734043 E:\123\123\405794502 E:\123\123\405804760 В каждой папке лежит файл Small parking lot.crp Relax Park 4x4.crp Your on road park 1x1.crp В итоге получается такой вид E:\123\123\405734043\Small parking lot.crp E:\123\123\405794502\Relax Park 4x4.crp E:\123\123\405804760\Your on road park 1x1.crp Есть вот такой скрипт :start rem Start folder set folder1="E:\123\123\405734043\" for /d %%Z in ("%folder1:~1,-1%\*.*") do ( if NOT %%~nZ==Park ( rem firstfolder for /d %%i in ("%%Z\*.*") do ( rem mode directory %%i for %%f in ("%%i\*.crp") do ( call :shortname "%%~ni" "%%~i" "%%~Z" "%%~nf" echo. )))) exit :shortname set shrt="%~1" set upd=%shrt:~1,6% if %upd%==Update (goto :end) echo "%~2" compare with echo "%~3\%shrt:~1,9% %~4" set old="%~2" set new="%~3\%shrt:~1,9% %~4" if NOT %new%==%old% (if NOT "%~4"=="NewAsset" (move "%~2" "%~3\%shrt:~1,9% %~4")) ELSE echo name exists :end echo. В итоге получается такой вид. E:\123\123\405734043 Small parking lot E:\123\123\405794502 Relax Park 4x4 E:\123\123\405804760 Your on road park 1x1 Дело в том что папки имеют 9 символов, но беда в том что, если папка будет иметь 10 символов к примеру E:\123\123\2240880754\İSTANBULL.crp То данный скрипт удалит последнюю цифру и конечный вид будет E:\123\123\224088075 İSTANBULL Автор данного скрипта не выходит на связь. Можете помочь сделать так что бы и 9 и 10 цифр работали адекватно и не удалялась 1 цифра в случае когда их 10 Спасибо. |
|
Отправлено: 14:08, 26-10-2020 |
Забанен Сообщения: 793
|
|
Отправлено: 15:17, 26-10-2020 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 238
|
Профиль | Отправить PM | Цитировать greg zakharov,
Ну то что имеем. Этому скрипту уже лет 6. А тот что на pwsh, он будет работать с любым расширением? И если в папке несколько файлов то он будет работать? |
Последний раз редактировалось KoRn0509, 26-10-2020 в 15:55. Отправлено: 15:32, 26-10-2020 | #3 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать @Echo Off Set "BoxIn=E:\123\123" Set "Mask=*.crp" FOR /F "usebackq delims=" %%d IN (`2^>nul Dir "%BoxIn%\" /A:D /B ^|FINDSTR /X /R /C:"^[0-9]*$"`) DO ( For %%f In ("%BoxIn%\%%d\%Mask%") Do 2>nul Ren "%BoxIn%\%%d" "%%d %%~nf" ) Exit /B Если в папке несколько .crp - файлов, папка будет переименована по имени первого файла. А Вам что надо - формулируйте задачу, а не предоставляйте чужой код. |
------- Последний раз редактировалось megaloman, 26-10-2020 в 16:17. Отправлено: 16:07, 26-10-2020 | #4 |
Старожил Сообщения: 238
|
Профиль | Отправить PM | Цитировать greg zakharov, Спасибо, отлично работает. Только если повторно запустить, он по второму кругу добавит, но это не беда.
megaloman, Надо что бы брался первый. Вот то что надо. Как я понимаю, .crp можно заменить на любое другое расширения и будет работать? |
|
Отправлено: 16:27, 26-10-2020 | #5 |
Забанен Сообщения: 793
|
KoRn0509, про повторный запуск ничего не оговаривалось, но это легко исправить путем добавления проверки соответствия имен (папки и файла).
|
Последний раз редактировалось greg zakharov, 26-10-2020 в 16:44. Отправлено: 16:39, 26-10-2020 | #6 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - [решено] Странное название папки | hotrout | Microsoft Windows 10 | 8 | 01-10-2016 21:53 | |
CMD/BAT - Название папки на серваке - IP компа | blackkardinal@vk | Скриптовые языки администрирования Windows | 4 | 17-08-2015 10:00 | |
CMD/BAT - [решено] Получить название папки из пути | Mad Max | Скриптовые языки администрирования Windows | 5 | 29-01-2015 22:53 | |
универсальное название папки | icetanker | AutoIt | 9 | 28-03-2014 16:27 | |
Интерфейс - [решено] Помогите изменить название папки | laslo1405 | Microsoft Windows 7 | 7 | 14-09-2013 09:02 |
|