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

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

Ветеран


Contributor


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

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


Вот маразматичное по скорости работы решение
Код: Выделить весь код
@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@<файл-список>, но почему-то мне в файл-списке не удаётся указывать полные (с путями) имена файлов, получается только для файлов в текущей папке.
А реально сделать более эффективно - скопировать исходные файлы порциями в промежуточную папку, и уж её архивировать со своим именем с последующим удалением.

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


Последний раз редактировалось megaloman, 18-11-2015 в 12:59.


Отправлено: 12:49, 18-11-2015 | #4