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

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

Ветеран


Contributor


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

Профиль | Отправить 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