|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Массовое переименование, отнимая слова от текущего имени |
|
CMD/BAT - [решено] Массовое переименование, отнимая слова от текущего имени
|
Новый участник Сообщения: 5 |
Профиль | Отправить PM | Цитировать Доброго всем!
Пожалуйста, подскажите, как сделать переименование файлов по шаблону: Есть папки с файлами, и в них файлы. dirName1
То есть отнять какое-то количество заранее известных слов, разделенных дефисом. Проблема в том, что просто по дефису делать нельзя — и в слове, и в имени папки, и в нужном имени тоже могут быть дефисы, надо как-то именно отнимать два слова... Это был результат выполнения скрипта (перемещал, а не переименовывал потому, что в некоторых папках по ren происходило зацикливание и рост длинны имени файлов до бесконечности), а теперь надо переименовать обратно: Буду очень признателен за подсказку... |
|
Отправлено: 17:31, 18-07-2018 |
Ушел из жизни Сообщения: 8595
|
Профиль | Сайт | Отправить PM | Цитировать ArchyA, упростим задачу:
Т.е. вам надо отрезать последовательность от начала имени и по второй дефис включительно, типа убрать slovo-dirName1- чтобы не заморачиваться тем, что dirname все разные? Или в именах каталогов тоже могут быть дефисы? |
------- Отправлено: 17:36, 18-07-2018 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать Дефисы могут быть внутри и слова, и папки, и имени... поэтому и пишу )
Например, slo-vo-dir-super-name-nujnoe-imya-faila.jpg, при этом slo-vo и dir-super-name будут известны. И кол-во дефисов везде произвольное |
Отправлено: 17:37, 18-07-2018 | #3 |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать Точнее так, в слове дефисов нет нигде и оно везде одинаковое.
А в каждой папке и в каждом имени могут быть или не быть 1-3 дефиса. И внутри каждой папки слово и второе слово, имя папки, всегда фиксированное для всех файлов в этой папке |
Отправлено: 17:52, 18-07-2018 | #4 |
Ушел из жизни Сообщения: 8595
|
Профиль | Сайт | Отправить PM | Цитировать ArchyA, это хуже.
Тогда вопрос: файлы сейчас разложены по папкам тем же, что и dirName, входящее в состав имён и которое надо отрезать? Если нет — ещё хуже. Особенно если файл в папке один. PS Чисто на будущее: применяйте в таких случаях сочетания, которые могут встретиться в именах лишь с очень малой вероятностью. Например, #####slovo-dirName1-###### и даже slovo-dirName1-######- вместо slovo-dirName1- вообще никаких затруднений не вызвало бы. |
|
------- Последний раз редактировалось mwz, 18-07-2018 в 18:11. Отправлено: 17:54, 18-07-2018 | #5 |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать Файлов в папке НИКОГДА не будет меньше трёх.
Да, ВСЕ файлы начинаются со слова+имя_текущей_папки. вот живой пример: E:\screens\elk\birthday .. symbol-birthday-birthday.jpg symbol-birthday-blue.jpg symbol-birthday-green.jpg symbol-birthday-martini.jpg symbol-birthday-red.jpg symbol-birthday-rose.jpg |
Отправлено: 17:59, 18-07-2018 | #6 |
Ушел из жизни Сообщения: 8595
|
Профиль | Сайт | Отправить PM | Цитировать Цитата ArchyA:
Теперь ясно всё — но я уж колхозить не буду: тут спецы должны предложить гораздо более изящное решение, чем наваял бы я. Ну а вариант — вычислять в каждой папке количество символов в последовательности slovo-имя_папки- и переименовывать все файлы этой папки, используя их текущее имя начиная с символа, следующего за вычисленным значением. И затем переходить к следующей папке |
|
------- Последний раз редактировалось mwz, 18-07-2018 в 18:48. Отправлено: 18:42, 18-07-2018 | #7 |
Ветеран Сообщения: 2723
|
Профиль | Отправить PM | Цитировать Наколхозю
@Echo Off Set "BoxIn=Z:\Жил-был у бабушки" Set "Mask=В начале было слово*.jpg" For /f "usebackq delims=" %%i in (`2^>nul dir /b /s /a:-d "%BoxIn%\%Mask%"`) Do Set "Fpath=%%~dpi" &Call :OverRen "%%i" "%%Fpath:~0,-1%%" GoTo :Eof :OverRen Set "NewName=%~nx1" Call Set "NewName=%%NewName:*%~nx2-=%%" echo Ren %1 "%NewName%" GoTo :Eof Мои файлы (если я правильно понял задачу)
До переименования Z:\Жил-был у бабушки\В начале было слово-Жил-был у бабушки-серенький волк.jpg Z:\Жил-был у бабушки\В начале было слово-Жил-был у бабушки-страшный козел.jpg Z:\Жил-был у бабушки\В начале было слово-Жил-был у бабушки-три-весёлых-гуся.jpg Z:\Жил-был у бабушки\Бабушка козлика\В начале было слово-Бабушка козлика-серенький волк.jpg Z:\Жил-был у бабушки\Бабушка козлика\В начале было слово-Бабушка козлика-страшный козел.jpg Z:\Жил-был у бабушки\Бабушка козлика\В начале было слово-Бабушка козлика-три-весёлых-гуся.jpg Z:\Жил-был у бабушки\Бабушка козлика\Очень любила\В начале было слово-Очень любила-серенький волк.jpg Z:\Жил-был у бабушки\Бабушка козлика\Очень любила\В начале было слово-Очень любила-страшный козел.jpg Z:\Жил-был у бабушки\Бабушка козлика\Очень любила\В начале было слово-Очень любила-три-весёлых-гуся.jpg Z:\Жил-был у бабушки\Серенький козлик\В начале было слово-Серенький козлик-серенький волк.jpg Z:\Жил-был у бабушки\Серенький козлик\В начале было слово-Серенький козлик-страшный козел.jpg Z:\Жил-был у бабушки\Серенький козлик\В начале было слово-Серенький козлик-три-весёлых-гуся.jpg После переименования Z:\Жил-был у бабушки\серенький волк.jpg Z:\Жил-был у бабушки\страшный козел.jpg Z:\Жил-был у бабушки\три-весёлых-гуся.jpg Z:\Жил-был у бабушки\Бабушка козлика\серенький волк.jpg Z:\Жил-был у бабушки\Бабушка козлика\страшный козел.jpg Z:\Жил-был у бабушки\Бабушка козлика\три-весёлых-гуся.jpg Z:\Жил-был у бабушки\Бабушка козлика\Очень любила\серенький волк.jpg Z:\Жил-был у бабушки\Бабушка козлика\Очень любила\страшный козел.jpg Z:\Жил-был у бабушки\Бабушка козлика\Очень любила\три-весёлых-гуся.jpg Z:\Жил-был у бабушки\Серенький козлик\серенький волк.jpg Z:\Жил-был у бабушки\Серенький козлик\страшный козел.jpg Z:\Жил-был у бабушки\Серенький козлик\три-весёлых-гуся.jpg |
------- Последний раз редактировалось megaloman, 18-07-2018 в 20:11. Отправлено: 19:45, 18-07-2018 | #8 |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать Это оно Идеально, спасибо! В понедельник оттестирую и отпишусь.
Работает великолепно, именно то, что нужно, спасибо огромное! ) |
Последний раз редактировалось ArchyA, 24-07-2018 в 10:42. Причина: протестировал Отправлено: 18:59, 19-07-2018 | #9 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Батник на переименование от имени администратора. | Kondei | Скриптовые языки администрирования Windows | 7 | 01-12-2011 06:59 | |
Разное - [решено] Запуск cmd от имени текущего пользователя | McLotos | Microsoft Windows 2000/XP | 3 | 25-01-2011 11:25 | |
VBS/WSH/JS - Удаленный запуск HTA-приложения от имени текущего пользователя | x wanderer | Скриптовые языки администрирования Windows | 1 | 15-04-2010 10:39 | |
CMD/BAT - [решено] AD массовое переименование пользователей | toperx | Скриптовые языки администрирования Windows | 9 | 24-07-2009 12:46 | |
Переименование %homepath% в зависимости от имени учетной записи | amped | Microsoft Windows 2000/XP | 6 | 26-04-2007 15:47 |
|