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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Рандомное копирование файлов по критерию

Ответить
Настройки темы
CMD/BAT - [решено] Рандомное копирование файлов по критерию

Новый участник


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

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


Прочесал форум, находил схожие задачи, но не видел конкретно такой.

Суть следующая. Есть папка с файлами. Нужно чтобы файлы внутри этой папки, рандомно разделились в группы по 5 файлов и раскидались в новые папки, согласно своим группам.
Т.е. Есть папка с 1500 файлами. Применяем к ней скрипт. В указанной директории создаётся 300 папок, в каждой из которых по 5 файлов выбранных случайно.

Рандом в данной операции играет важную роль.

Искренне надеюсь на вашу помощь.

Отправлено: 11:13, 04-01-2019

 

Аватара для YuS_2

Crazy


Contributor


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

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


Цитата arioo7:
Прочесал форум, находил схожие задачи, но не видел конкретно такой. »
Цитата arioo7:
Рандом в данной операции играет важную роль. »
Цитата arioo7:
Искренне надеюсь на вашу помощь. »
Рандом, конечно же, играет наиважнейшую роль в упорядочивании расположения файлов на диске, ага
За "изобретение" - 5, по предмету - 2. Профессор, конечно, лопух, но аппаратура при нём, при нём!
Помощь - предполагает наличие приложенных усилий, причем не для поиска готового решения, а приложенных усилий именно для решения задачи... есть внятные попытки решить задачу самостоятельно, студент?

-------
scio me nihil scire. Ѫ

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

Отправлено: 12:52, 04-01-2019 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Contributor


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

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

mwz mwz вне форума

Аватара для mwz

Ушел из жизни


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

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


Цитата YuS_2:
Рандом, конечно же, играет наиважнейшую роль в упорядочивании расположения файлов на диске, ага »
А что, я тут как-то задавал чисто практический для меня вопрос: как к тысяче и более файлов приписать случайный числовой префикс, чтобы затем эти файлы можно было положить на флешку с FAT – т.е. чтобы при копировании на FAT по алфавиту они располагались там в случайном порядке относительно исходных имён. Результатом я был доволен.

-------
Mikhail Zhilin


Отправлено: 23:42, 04-01-2019 | #4


Ветеран


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

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


Цитата mwz:
А что, я тут как-то задавал чисто практический для меня вопрос: как к тысяче и более файлов приписать случайный числовой префикс »
Far Manager + Visual renaming files plugin, маска для имени — «[R]_[N]» .

Отправлено: 00:06, 05-01-2019 | #5

mwz mwz вне форума

Аватара для mwz

Ушел из жизни


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

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


Iska, Да я и для TotalCmd позже нашёл плагин RandomWDX_1_0_1. Но ваше как раз решение батника пригодилось напрямую: надо было иметь пятизначные числа с лидирующими нулями в случае, если значность меньше.

-------
Mikhail Zhilin


Отправлено: 01:30, 05-01-2019 | #6


Ветеран


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

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


mwz, тут, увы, этого нет:
Цитата:
[R] Случайное число от 0 до 32767.
— просто число, достаточно ограниченное (можно, конечно, смультиплицировать сам шаблон), и без лидирующих нулей.

Отправлено: 01:56, 05-01-2019 | #7


Ветеран


Contributor


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

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


mwz,
Цитата:
тут как-то задавал чисто практический для меня вопрос: как к тысяче и более файлов приписать случайный числовой префикс
Уже не актуально?
В дополнение к решенной 5 лет назад задаче, еще вариант
Код: Выделить весь код
@Echo Off
cls
	Set "BoxIn=Z:\Box_In\Alll"
	Set "Mask=*.*"

	Set /A Max=10000

	Set /A N=%Max%
	FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\%Mask%" /B /A:-D /O:-D /T:C`) DO Call :Count "%%~nxf"
	FOR /F "usebackq tokens=1* delims==" %%f IN (`Set "@@"`) DO Call :MyRen "%BoxIn%\%%g" "%%g" %Max%

	Set /A N=%Max%
	FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\%Mask%" /B /A:-D /O:N`) DO Call :Count "%%~nxf"
	Set /A N=%Max%
	FOR /F "usebackq tokens=1* delims==" %%f IN (`Set "@@"`) DO Call :MyRen2 "%BoxIn%\%%g" "%%g" %Max%
pause
GoTo :Eof

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

:MyRen
	Set /A j=%Random%+%3
	Ren %1 "%j%_%~2"
Exit /B 0

:MyRen2
	Set /A N+=1
	Set "New=%~2"
	Ren %1 "%N%_%New:*_=%"
Exit /B 0
Если не требуется, чтобы префиксы никак не дублировались, красные строки можно удалить

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


Последний раз редактировалось megaloman, 05-01-2019 в 13:48.


Отправлено: 09:06, 05-01-2019 | #8


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата mwz:
т.е. чтобы при копировании на FAT по алфавиту они располагались там в случайном порядке относительно исходных имён. »
Ну, это несколько другая задача, действительно, имеющая практическое значение. А у ТС-а, "чисто" непрактическая задача, т.е. задача на поиск решения, всего лишь. То бишь, в данном случае, суть задачи абсолютно неважна, важен поиск решения... а мы, предоставляя ему решение, тем самым оказываем медвежью услугу... увы.

-------
scio me nihil scire. Ѫ


Отправлено: 11:29, 05-01-2019 | #9

mwz mwz вне форума

Аватара для mwz

Ушел из жизни


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

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


Цитата megaloman:
Уже не актуально? »
Ну это ж была "конечная" задача, и развития её с самого начала не просматривалось: лежит тот батничек у меня в папке, в которой файлы периодически удаляются и добавляются, периодически перетряхиваю им последовательность, задачу свою выполняет, мы с женой довольны.

Но спасибо — посмотреть другие методы тоже бывает полезно.

-------
Mikhail Zhilin


Отправлено: 19:47, 05-01-2019 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Рандомное копирование файлов по критерию

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - CMD/BAT Поиск по каталогам файлов bat и конвертирование их в JPEG freerider1989 Скриптовые языки администрирования Windows 1 18-04-2016 08:37
CMD/BAT - Поиск в html файле ip адресов и копирование их в новый txt. 666egor666 Тест-форум 0 30-04-2015 11:31
копирование файлов по сети через cmd genia_2609 Microsoft Windows NT/2000/2003 15 13-04-2015 12:10
CMD/BAT - cmd\bat. Копирование содержимого папки без буфера обмена Frommer Скриптовые языки администрирования Windows 1 09-04-2015 22:03
CMD/BAT - Параллельное копирование файлов в bat. Dremor Скриптовые языки администрирования Windows 18 12-01-2014 23:06




 
Переход