|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Пакетное переименование файлов в случайное имя |
|
Любой язык - [решено] Пакетное переименование файлов в случайное имя
|
Новый участник Сообщения: 11 |
Помогите пожалуйста, есть большое количество папок с картинками. Нужно переименовать их в рандомные имена:
символы, цифры, регистр, длина - всё рандомно. Можно так сделать через батник? Пример: sd32jsd2.jpg owi2.jpg wbj22sdHsjhJ.jpg Заранее огромное спасибо. Уже всё перерыл(( |
|
Отправлено: 13:40, 16-01-2017 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать brosafari,
Цитата brosafari:
Я задал набор символов (67 штук), которые будут участвовать в именах файлов. Задал максимальное и минимальное число символов в имени файла. Вот решение в этих предположениях
@echo off cls Set "BoxIn=Z:\Box_In" Set "Mask=*.jpg" Set "Sym=1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM@#$_-" Set /A M=67+1 Set /A Nmax=20 Set /A Nmin=8 Set "RanDir=%BoxIn%\%Random%%Random%%Random%%Random%" Md %RanDir% SetLocal EnableExtensions EnableDelayedExpansion For /f "usebackq delims=" %%f in (`Dir "%BoxIn%\%Mask%" /B /A:-D 2^>nul`) Do Call :ReMove "%BoxIn%\%%f" Move "%RanDir%\*.*" "%BoxIn%\" >nul 2>nul For /f "usebackq delims=" %%d in (`Dir "%BoxIn%\" /S /B /A:D 2^>nul`) Do ( If /I Not "%%d"=="%RanDir%" ( For /f "usebackq delims=" %%f in (`Dir "%%d\%Mask%" /B /A:-D 2^>nul`) Do Call :ReMove "%%d\%%f" Move "%RanDir%\*.*" "%%d\" >nul 2>nul ) ) Rd "%RanDir%" GoTo :Eof :ReMove Set "SS=" Set /A N=!random!%%(%Nmax%-%Nmin%+1)+%Nmin% FOR /L %%i IN (1,1,!N!) DO ( Set /A R=!Random!%%%M% Call Set "S1=%%Sym:~!R!,1%%" Set "SS=!SS!!S1!" ) Move %1 "%RanDir%\!SS!%~x1" >nul GoTo :Eof rem http://www.cyberforum.ru/cmd-bat/thread1740345.html#post9165900 rem http://www.celitel.info/klad/nhelp/helpbat.php?dcmd=ex_string |
|
------- Последний раз редактировалось megaloman, 17-01-2017 в 21:40. Отправлено: 18:12, 16-01-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 11
|
Профиль | Отправить PM | Цитировать Спасибо огромное! Видимо это то что нужно, но я немного туповат(( как бы создать батник слава богу могу, но при нажатий - появляется командная строка и сразу исчезает. В итоге ничего не изменилось.
Скажите пожалуйста, как правильно его юзать? Спасибо. |
Отправлено: 17:51, 17-01-2017 | #3 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать brosafari, Возможно, Вы не указали путь к обрабатываемой папке:
Set "BoxIn=Z:\Box_In" - здесь надо вместо Z:\Box_In написать свой путь. Если батник находится в обрабатываемой папке, то вот решение, здесь, естественно, путь указывать не надо
@echo off cls Set "Mask=*.jpg" Set "BoxIn=%~dp0" Set "BoxIn=%BoxIn:~0,-1%" Set "Sym=1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM@#$_-" Set /A M=67+1 Set /A Nmax=20 Set /A Nmin=8 Set "RanDir=%BoxIn%\%Random%%Random%%Random%%Random%" Md %RanDir% SetLocal EnableExtensions EnableDelayedExpansion For /f "usebackq delims=" %%f in (`Dir "%BoxIn%\%Mask%" /B /A:-D 2^>nul`) Do Call :ReMove "%BoxIn%\%%f" Move "%RanDir%\*.*" "%BoxIn%\" >nul For /f "usebackq delims=" %%d in (`Dir "%BoxIn%\" /S /B /A:D 2^>nul`) Do ( If /I Not "%%d"=="%RanDir%" ( For /f "usebackq delims=" %%f in (`Dir "%%d\%Mask%" /B /A:-D 2^>nul`) Do Call :ReMove "%%d\%%f" Move "%RanDir%\*.*" "%%d\" >nul ) ) Rd "%RanDir%" GoTo :Eof :ReMove Set "SS=" Set /A N=!random!%%(%Nmax%-%Nmin%+1)+%Nmin% FOR /L %%i IN (1,1,!N!) DO ( Set /A R=!Random!%%%M% Call Set "S1=%%Sym:~!R!,1%%" Set "SS=!SS!!S1!" ) Move %1 "%RanDir%\!SS!%~x1" >nul GoTo :Eof |
------- Последний раз редактировалось megaloman, 17-01-2017 в 21:38. Отправлено: 21:29, 17-01-2017 | #4 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Пакетное переименование файлов по маске | Viktor99 | Скриптовые языки администрирования Windows | 1 | 15-08-2016 23:25 | |
CMD/BAT - [решено] Пакетное переименование файлов | ArsenBespalov | Скриптовые языки администрирования Windows | 9 | 11-08-2016 03:56 | |
Любой язык - [решено] Пакетное переименование файлов с отсечением лишнего в имени. | LukAleX | Скриптовые языки администрирования Windows | 3 | 01-08-2016 11:16 | |
CMD/BAT - [решено] Пакетное переименование файлов (синхронизирование имён одного расширения с другим) | 19w85 | Скриптовые языки администрирования Windows | 13 | 04-10-2013 22:02 | |
CMD/BAT - [решено] Пакетное переименование с создание сложных имён файлов | alexmoreman | Скриптовые языки администрирования Windows | 4 | 28-11-2011 02:27 |
|