Что нового

[Файловая система] Создать папки заданного размера

Rouzenrot

Новичок
Сообщения
30
Репутация
0
Всем привет.
Народ, может подскажет кто. Есть такая задачка. Есть некая папка, которая содержит множество файлов разного размера. И из этих файлов нужно создать архивы arj, размером не больше 5мб. При этом, каждый архив должен быть самостоятельным, то есть вариант с разбитием архива на файлы не подходит.
То есть, нужно распихать эти файлы по подпапкам, причем размер подпапок не превышал 5мб, что бы потом скормить эти папки архиватору.
Подскажите, в какую сторону можно попробовать копать для решения этой задачки?
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Брать каждый файл, проверять у каждого файла размер и плюсовать. Если доходим до пяти, то цикл завершаем и заходим в след. папку.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
как пример. не обязательно так, но идея, думаю, понятна

Код:
#include <File.au3>
Local $sDest = @ScriptDir & '\result'
Local $aFiles = _FileListToArrayRec('Путь к папке с файлами','*', 1, 1, 0, 2); поиск во вложенных папках(рекурсия)

Local $iTmpS = 0, $cd = 1
For $i = 1 To $aFiles[0]
	If FileGetSize($aFiles[$i]) > 5242880 Then ContinueLoop
	$iTmpS += FileGetSize($aFiles[$i])
	If $iTmpS <= 5242880 Then
		FileCopy($aFiles[$i], $sDest & '\' & $cd & '\' & StringRegExpReplace($aFiles[$i], '.*\\', ''), 8)
	Else
		$iTmpS = 0
		If $i > 1 Then $i -= 1
		$cd += 1
	EndIf
Next
 
Автор
R

Rouzenrot

Новичок
Сообщения
30
Репутация
0
как пример. не обязательно так, но идея, думаю, понятна

Спасибо огромное, как раз то что надо! До анализа размера файлов по циклу я и сам додумывался, а вот вариант со сравнением папка+файл как-то в голову никак не приходил =)
 
Верх