[CMD] Архивация по количеству

Maksim222

Новый пользователь
Сообщения
14
Реакции
0
Добрый день. Может кто-нибудь помочь по архивации файлов?
Вот такое условие

Файлы формируются с помощью программы архиватора ARJ32.
Каждый Архивный файл содержит не более 50 файлов и имеет размер не более 50 мб.
Наименование Архивного файла имеет следующую структуру:
<AFN_3601742_MIFNS00_ГГГГММДД_NNNNN.arj>

Где ГГГГММДД это текущее число, NNNNN это имя архива по порядку начиная с 00001
Файлы дают по 200, 500, 1000 штук. Среди них расширения .xml и .vrb

Раньше все файлы архивировали в один архив куче, но в данный момент есть нужда в строгой архивации по 50 файлов в архиве и каждый архив не больше 50 мб весом.
Старый батник не подходит

CMD/BATCH:
set NNNNN=00001
arj32.exe a -e AFN_3601742_MIFNS00_%date:~6,4%%date:~3,-5%%date:~0,-8%_%NNNNN%.arj *.vrb *.xml
if not exist *.arj *.xml goto end
del *.vrb *.xml
goto exit
:end
 
Последнее редактирование модератором:
UPD
Есть вот такой батник, но не пойму как задать параметр счета чтобы архивы шли по порядку 00001, 00002, 00003 и тд. Поулчается только 00001 и 00002. Еще почему-то после созданяи первого архива батник останавливается и приходится запускать по-новой чтобы создался второй архив. Хотелось бы чтобы батник сразу все файлы обработал за раз.

CMD/BATCH:
@echo off
:label1
setlocal enabledelayedexpansion
for %%i in ("D:\440\output\*") do (
set var_!random!="%%~fi"
)
if not exist *.xml *.vrb goto exit
for /f "tokens=1* delims==" %%i in ('set var_') do (
set /a n+=1
move %%j "D:\440\arh">nul&& echo !n!. "%%~nxj" moved.
if !n!==50 goto :label2
)
:label2
set NNNNN=00001
if exist AFN_3601742_MIFNS00_%date:~6,4%%date:~3,-5%%date:~0,-8%_%NNNNN%.arj set NNNNN=00002
arj32.exe a -e AFN_3601742_MIFNS00_%date:~6,4%%date:~3,-5%%date:~0,-8%_%NNNNN%.arj *.vrb *.xml
del *.xml *.vrb
if exist *.xml *.vrb goto :label1

pause
goto exit
endlocal
exit /b
 
Последнее редактирование модератором:
Назад
Сверху Снизу