Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2728
Благодарности: 1697

Профиль | Отправить PM | Цитировать


brosafari,
Цитата brosafari:
есть большое количество папок с картинками
- не конкретно. Я предположил, что есть некая папка BoxIn, в ней есть подпапки. В этой папке и подпапках есть файлы jpg, которые надо переименовать.
Я задал набор символов (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