Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 1
Регистрация: 21.06.2020
Сообщений: 133

Как из папки раскидать все файлы по подпапкам по 10 шт?

21.05.2022, 16:16. Показов 1018. Ответов 3

Студворк — интернет-сервис помощи студентам
Есть папка, в ней много файлов .mp4 Как используя батник (не powershell) внутри папки создать много подпапок и раскидать по подпапкам эти файлы, чтоб в каждой подпапке было не более 10 файлов.

Естественно, что если в папке у нас будет не кратное кол-во .mp4 файлов то в последней подпапке будет закинуто меньше чем 10 файлов.

Добавлено через 1 час 14 минут
Данный скрипт делает это, но как указать чтоб скрипт работал с конкретной папкой , т.к. батник лежит рядом с этой главной папкой а не внутри неё?
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@Echo Off
If /I Not "%__CD__%"=="%~dp0" PushD "%~dp0" 2>Nul||Exit/B
SetLocal EnableDelayedExpansion
Set "DirN=-1"
 
:Check_DirN
Set/A "DirN+=1"
If Exist "%DirN%" GoTo Check_DirN
Set "limit=10"
For %%A In (*.bat *.cmd *.mp4) Do (
    If Not Exist "%DirN%" MD "%DirN%"
    If /I Not "%%~nxA"=="%~nx0" RoboCopy . "%DirN%" "%%A" /MOV 1>NUL
    Set/A "limit-=1"
    If !limit! Lss 0 GoTo Check_DirN
)
Echo(Task Done!
Timeout -1 1>Nul
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.05.2022, 16:16
Ответы с готовыми решениями:

Распределить файлы заданной папки по подпапкам
Помогите с задачками! Задачи на bat-файлы: Распределить файлы заданной папки по подпапкам, группируя их по длине (короткие до 1К,...

Распределить файлы заданной папки по подпапкам, группируя их по длине (короткие до 1К, средние до 10К и больши
Написать javascript. Распределить файлы заданной папки по подпапкам, группируя их по длине (короткие до 1К, средние до 10К и большие...

Распределить файлы заданной папки по подпапкам, группируя их по длине (короткие до 1К, средние до 10К и большие >10K)
Распределить файлы заданной папки по подпапкам, группируя их по длине (короткие до 1К, средние до 10К и большие >10K)

3
 Аватар для Angry Old Man
3004 / 744 / 313
Регистрация: 26.03.2022
Сообщений: 1,390
Записей в блоге: 1
21.05.2022, 18:28
Лучший ответ Сообщение было отмечено mik777em как решение

Решение

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@Echo Off
cls
    Set "BoxIn=Z:\Box_In\Тра ля ля"
    Set "Mask=*.mp4"
    Set "BoxOut=%BoxIn%"
    Set /A N=4, Max=10, M=100000    &Rem N-кол-во позиций в нумерации, Max - кол-во файлов в папке
 
    For %%d In ("%BoxIn%") Do Set "DName=%%~nxd"
    :Begin
        Set /A M+=1, i=0
        Call Set "MM=%BoxOut%\%Dname%_%%M:~-%N%%%"
 
        2>nul Md "%MM%" ||GoTo :Begin
        For /f "usebackq delims=" %%f In (`2^>nul Dir "%BoxIn%\%Mask%" /A:-D /B`) Do (Call :MyMove "%%f" ||GoTo :Begin)
    )
Exit /B 0
:MyMove
    Set /A i+=1
    >nul Move "%BoxIn%\%~1" "%MM%\"
    If %i% EQU %Max% Exit /B 1
Exit /B 0
1
0 / 0 / 0
Регистрация: 23.05.2022
Сообщений: 2
24.05.2022, 13:06
Спасибо, к сожалению далек от этого всего, для меня даже слово маска не особо знакомо) Еще вопрос, возможны ли следующие условия?
надо что бы оно само спрашивало у тебя
откуда взять фото (указал)
куда положить (указал)
по сколько фото в одну папку (указал)

Еще раз благодарю за отклик.
0
 Аватар для Angry Old Man
3004 / 744 / 313
Регистрация: 26.03.2022
Сообщений: 1,390
Записей в блоге: 1
24.05.2022, 17:13
Цитата Сообщение от Demokraticy Посмотреть сообщение
надо что бы оно само спрашивало у тебя
откуда взять фото (указал)
куда положить (указал)
по сколько фото в одну папку (указал)
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
@Echo Off
cls
    Set "Mask=*.mp4"
    Set /A N=4, M=100000    &Rem N-кол-во позиций в нумерации папок
 
    Call :InputDir "Введите путь ОТКУДА берем файлы:" "BoxIn" ||Exit /B 2
    Call :InputDir "Введите путь КУДА перемещаем файлы:" "BoxOut" ||Exit /B 2
    Call :InputMax "Max" ||Exit /B 2
 
    For %%d In ("%BoxIn%") Do Set "DName=%%~nxd"
    :Begin
        Set /A M+=1, i=0
        Call Set "MM=%BoxOut%\%Dname%_%%M:~-%N%%%"
 
        2>nul Md "%MM%" ||GoTo :Begin
        For /f "usebackq delims=" %%f In (`2^>nul Dir "%BoxIn%\%Mask%" /A:-D /B`) Do (Call :MyMove "%%f" ||GoTo :Begin)
    )
pause
Exit /B 0
 
:InputDir
    Echo. &Echo %~1
    Set "@@Path="
    Set /P @@Path=без кавычек и в конце пути без пробелов и \ ^> 
 
    If "%@@Path%"=="" GoTo :Err 
    If "%@@Path:~-1%"=="\" Set "@@Path=%@@Path:~0,-1%"
    If Exist "%@@Path%\" (Set "%~2=%@@Path%" &Exit /B 0)
    :Err
    Echo. &Echo Папка "%@@Path%" не найдена. &Echo.
 
    Choice /N /C RX /M "R -Повторить ввод. X -Завершение работы >"
    If %ErrorLevel% EQU 1 GoTo :InputDir
Exit /B 2
 
:InputMax
    Set /A @@N=-1
    Echo.& Set /P @@Max=Введите количество файлов в папках: ^>
    2>nul Set /A @@N=100+%@@Max%-100
    If "%@@N%"=="%@@Max%" If %@@Max% GTR 0 (Set /A %~1=%@@Max% &Exit /B 0)
    Echo. &Echo Введенное количество "%@@Max%" не корректно. &Echo.
 
    Choice /N /C RX /M "R -Повторить ввод. X -Завершение работы >"
    If %ErrorLevel% EQU 1 GoTo :InputMax
Exit /B 2
 
:MyMove
    Set /A i+=1
    >nul Move "%BoxIn%\%~1" "%MM%\"
    If %i% EQU %Max% Exit /B 1
Exit /B 0
Вот вариант с графическим интерфейсом (сохранить в кодировке 1251):
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
@Echo Off
cls
>nul chcp 1251
    Set "Mask=*.mp4"
    Set /A N=4, M=100000    &Rem N-кол-во позиций в нумерации папок
 
    Call :InputDir "Введите путь ОТКУДА берем файлы:" "BoxIn" ||Exit /B 2
        Echo %BoxIn%
    Call :InputDir "Введите путь КУДА перемещаем файлы:" "BoxOut" ||Exit /B 2
        Echo %BoxOut%
    Call :InputMax "Max" ||Exit /B 2
 
    For %%d In ("%BoxIn%") Do Set "DName=%%~nxd"
    :Begin
        Set /A M+=1, i=0
        Call Set "MM=%BoxOut%\%Dname%_%%M:~-%N%%%"
 
        2>nul Md "%MM%" ||GoTo :Begin
        For /f "usebackq delims=" %%f In (`2^>nul Dir "%BoxIn%\%Mask%" /A:-D /B`) Do (Call :MyMove "%%f" ||GoTo :Begin)
    )
pause
Exit /B 0
 
:InputDir
    Echo. &Echo %~1
    Set "@@Path="
 
    For /f "usebackq delims=" %%i in (
            `@"%systemroot%\system32\mshta.exe" "javascript:var objShellApp = new ActiveXObject('Shell.Application');var Folder = objShellApp.BrowseForFolder(0, 'SELECT FOLDER',1, '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}');try {new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(Folder.Self.Path)};catch (e){};close();" ^
            1^|more`
    ) Do Set "@@Path=%%i"
    If "%@@Path%"=="" GoTo :Err 
    If "%@@Path:~-1%"=="\" Set "@@Path=%@@Path:~0,-1%"
    If Exist "%@@Path%\" (Set "%~2=%@@Path%" &Exit /B 0)
    :Err
    Echo. &Echo Папка "%@@Path%" не найдена. &Echo.
 
    Choice /N /C RX /M "R -Повторить ввод. X -Завершение работы >"
    If %ErrorLevel% EQU 1 GoTo :InputDir
Exit /B 2
 
:InputMax
    Set /A @@N=-1
    Echo.& Set /P @@Max=Введите количество файлов в папках: ^>
    2>nul Set /A @@N=100+%@@Max%-100
    If "%@@N%"=="%@@Max%" If %@@Max% GTR 0 (Set /A %~1=%@@Max% &Exit /B 0)
    Echo. &Echo Введенное количество "%@@Max%" не корректно. &Echo.
 
    Choice /N /C RX /M "R -Повторить ввод. X -Завершение работы >"
    If %ErrorLevel% EQU 1 GoTo :InputMax
Exit /B 2
 
:MyMove
    Set /A i+=1
    >nul Move "%BoxIn%\%~1" "%MM%\"
    If %i% EQU %Max% Exit /B 1
Exit /B 0
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.05.2022, 17:13
Помогаю со студенческими работами здесь

Как ввести директорию папки и вывести все файлы и папки в ней?
Необходима программа, которая при вводе директории папки выводит список файлов и папок с их размерами, которые находятся в ней. Посмотрел...

Как в коде указать все папки, из которых нужно удалить все файлы старше 31-го дня?
Привет всем, кто не обошёл вниманием данный пост!:friends: Есть ТЗ: удалять файлы старше 31 дня из заданных папок. Пример -...

Как сохранить все wma файлы из папки в один, что бы потом сразу все подгружать?
как сохранить все wma файлы из папки в один, что бы потом сразу все подгружать в файл?

Как удалить ВСЕ папки и файлы?
как мне стереть полностью все файлы и папки в какойнибудь папке , притом, Kill c:*.* не подходит, так как таким образом только файлы...

Как удалить все файлы из папки
Как удалить ВСЕ файлы из папки?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru