Вот маразматичное по скорости работы решение
Код:
@Echo Off
cls
Set "DirIn=E:\Games"
Set "DirArc=E:\Delete"
Set /A SMax=7500000
Set ARC="C:\Program Files\WinRAR\Rar.exe" a -r
Set "NArc=%Date:~6,4%%Date:~3,2%%Date:~0,2%_Input"
SetLocal EnableExtensions EnableDelayedExpansion
Set /A N=1
FOR /F "usebackq delims=" %%i IN (`dir "%DirIn%\" /b /A:-D /s 2^>nul`) DO (
%ARC% "%DirArc%\%NArc%!N!.rar" "%%i" >nul
FOR /F "usebackq delims=" %%j IN (`dir "%DirArc%\%NArc%!N!.rar" /b /A:-D /s`) DO (
Echo %%~zj %NArc%!N!.rar %%i
If %%~zj GTR %SMax% Set /A N=!N!+1
)
)
Создаются архивы чуть более указанного размера папки E:\Games в папке E:\Delete (при условии что исходные файлы много меньше разрешенного размера архива) Написал для архиватора rar, но упаковщик можно применить любой - zip у меня не под руками да и редко я с ним работаю. Маразматичность - в вызове архиватора для упаковки каждого файла.
А если реализовывать второй ваш вариант
У rar есть ключ -N@<файл-список>, но почему-то мне в файл-списке не удаётся указывать полные (с путями) имена файлов, получается только для файлов в текущей папке.
А реально сделать более эффективно - скопировать исходные файлы порциями в промежуточную папку, и уж её архивировать со своим именем с последующим удалением.