Имя пользователя:
Пароль:
 

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

Ветеран


Contributor


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

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


Как-то так
Код: Выделить весь код
@Echo Off
cls
	Set "BoxIn=Z:\Box_In"
	Set "Mask=*.*"
	Set "BoxOut=Z:\Box_Out"
	Set /A QQ=5

	Set /A Max=10000	

	Set /A N=%Max%
	FOR %%f IN ("%BoxIn%\%Mask%") DO Call :Count "%%~nxf"
	
	Set /A M=N
	Set /A i=0
	Set /A ND=%Max%

	Set /A QQQ=QQ+%Max%
	Set /A L=0

	:Begin
		Set /A j=%Random%
		Set /A j=%Max%+1+%j%-(%j%/(%N%-%Max%))*(%N%-%Max%)

		If %L%==0 If %i%==0 Set /A ND+=1 
		If %L%==0 If %i%==0 Md "%BoxOut%\%ND%" 
		Call :MyMove "F%j%" "%%F%j%%%" "%BoxIn%" "%BoxOut%\%ND%"||(Set /A L=1 &GoTo :Begin)
		Set /A L=0
		Set /A i+=1
		Set /A M-=1
		If %M% GTR %Max% If %i% LSS %QQ% GoTo :Begin 
		Set /A i=0
		If %M% GTR %QQQ% GoTo :Begin 
                If %M% GTR %Max% Set /A ND+=1
                If %M% GTR %Max% (Md "%BoxOut%\%ND%" & >nul Move "%BoxIn%\%Mask%" "%BoxOut%\%ND%\")
pause
GoTo :Eof

:Count
	Set /A N+=1
	Set "F%N%=%~1"
GoTo :Eof

:MyMove
	If %2=="" Exit /B 1
	Set "%~1=" 
	>nul Move /Y "%~3\%~2" "%~4\"
Exit /B 0

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:57, 04-01-2019 | #3