brosafari,
Цитата brosafari:
есть большое количество папок с картинками
|
- не конкретно. Я предположил, что есть некая папка BoxIn, в ней есть подпапки. В этой папке и подпапках есть файлы jpg, которые надо переименовать.
Я задал набор символов (67 штук), которые будут участвовать в именах файлов.
Задал максимальное и минимальное число символов в имени файла.
Вот решение в этих предположениях
Код:
![Выделить весь код](images/misc/selectcode.png)
@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
Внизу сохранил ссылки, по которым я подсмотрел нужное для решения