Как из папки раскидать все файлы по подпапкам по 10 шт?
Есть папка, в ней много файлов .mp4 Как используя батник (не powershell) внутри папки создать много подпапок и раскидать по подпапкам эти файлы, чтоб в каждой подпапке было не более 10 файлов.
Естественно, что если в папке у нас будет не кратное кол-во .mp4 файлов то в последней подпапке будет закинуто меньше чем 10 файлов. Данный скрипт делает это, но как указать чтоб скрипт работал с конкретной папкой , т.к. батник лежит рядом с этой главной папкой а не внутри неё? @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 |
Нашел решение:
@echo off setlocal EnableExtensions DisableDelayedExpansion (for %%i in (*.mov) do ( md "result_%%~ni" ffmpeg.exe -i "%%i" -filter_complex "[0:v]boxblur=40,scale=1080x1920,setsar=1[bg];[0:v]scale=1080:1920:force_original_aspect_ratio=decrease[fg];[bg][fg]overlay=y=(H-h)/2" -c:v libx264 -profile:v main -level:v 3.0 -x264-params scenecut=0:open_gop=0:min-keyint=72:keyint=72 -c:a aac -preset slow -crf 23 -r 30 -sn -force_key_frames "expr: gte(t, n_forced * 0.5)" -f segment -segment_time 14.5 -reset_timestamps 1 "result_%%~ni\%%~ni%%03d.mp4" if not errorlevel 1 set "FolderName=result_%%~ni" & call :MoveFiles )) & exit /B :MoveFiles set "FolderCount=0" :FolderLoop set /A FolderCount+=1 set "SlicesFolder=%FolderName%\Slices_%FolderCount%" md "%SlicesFolder%" set "FileCount=0" for %%j in ("%FolderName%\*.mp4") do ( setlocal EnableDelayedExpansion if !FileCount! == 10 endlocal & goto FolderLoop endlocal move "%%j" "%SlicesFolder%\" >nul set /A FileCount+=1 ) goto :EOF |
Часовой пояс GMT +3, время: 15:04. |