PDA

Показать полную графическую версию : нумерация формируемых архивов


umagonj
16-07-2014, 08:31
Доброе утро!
есть такой скрипт:
:arj311
IF NOT EXIST "%script_root%%1\*.arj" (
echo %time:~0,8% %date% >> "%script_root%logs\311p.log"
"%utils_folder%arj32.exe" a -e "%script_root%%1\%1%bik%%date%01.arj" "%script_root%%1\SBC*.txt"
set num=01
) ELSE (
for /f "tokens=1 delims=." %%a in ('dir %script_root%%1\*.arj /b') do (
set num=%%a
)
set num=!num:~-2!
echo %time:~0,8% %date% >> "%script_root%logs\311p.log"
del /f /s /q "%script_root%%1\*!num!.arj" >> "%script_root%logs\311p.log"
If !num! LSS 10 set num=!num:~-1!
set /a num=!num!+1
If !num! LSS 10 set num=0!num!
echo %time:~0,8% %date% >> "%script_root%logs\311p.log"
"%utils_folder%arj32.exe" a -e "%script_root%%1\%1%bik%%date%!num!.arj" "%script_root%%1\SBC*.txt"
)
del /f /s /q "%script_root%%1\SBC*.txt" >> "%script_root%logs\311p.log"
exit /b

немного подробней:
пихаем sbc*.txt файлы в архив arj типа \%1%bik%%date%!num!.arj"
где %1 будет типА или типВ
%bik просто бик
а вот !num! железно почемуто делает только 01 архив.

проблема в том что изза имени этого архива приходят ответы с такими же именами и файлики друг друга перезатирают.

Iska
17-07-2014, 06:30
umagonj, мы должны гадать по куску пакетного файла? Что такое «%script_root%», «%utils_folder%» и т.д, и т.п.

umagonj
18-07-2014, 12:34
хм, не думал что эти переменные могут быть важны
"%script_root%%1\*.arj = директория где лежат всякие бат файлы
%1 уже писал, это папка в зависимости от типа файла (т.е А или B)
"%utils_folder%arj32.exe" - место где лежат утилиты.

вопрос был не в етом: я как человек, недавно назначенный за работу батников, немного не понимаю что делают те или иные функции
вопрос в чем: КАК именно он определяет что пора делать архив под номером 2, а не начинать с 1го?

IF NOT EXIST "%script_root%%1\*.arj" (
echo %time:~0,8% %date% >> "%script_root%logs\311p.log"
"%utils_folder%arj32.exe" a -e "%script_root%%1\%1%bik%%date%01.arj" "%script_root%%1\SBC*.txt"
set num=01
)
я так понимаю это просто создание архива под номером 1

ELSE (
for /f "tokens=1 delims=." %%a in ('dir %script_root%%1\*.arj /b') do (
set num=%%a
)
set num=!num:~-2!
echo %time:~0,8% %date% >> "%script_root%logs\311p.log"
del /f /s /q "%script_root%%1\*!num!.arj" >> "%script_root%logs\311p.log"
а тут он как? он просто смотрит есть ли в "%script_root%%1\*.arj" архив , и если есть , то он делает его со следующим номером?

спасибо, проблема не в етом куске была.
перемещал архив в папку отправления, а копию "%script_root%%1\*.arj" не оставлял, вот он и клепал архив 01

Iska
18-07-2014, 16:31
хм, не думал что эти переменные могут быть важны »
спасибо, проблема не в етом куске была. »
umagonj, дело не в том, важны или не важны, в том или не в том «куске». Дело в том, что Вы видите всю информацию, а выкладываете частичную и предлагаете по этой частичной информации гадать.

umagonj
21-07-2014, 15:00
Iska, понял вас, буду иметь ввиду эту ошибку.
вообщем разобраться так и не получилось.
что хотел сказать:
нужно создание архива arj формата

set dir=c:\311fiz\files\
arj32 a -e BN11751%date:~8,4%%date:~3,2%%date:~0,2%0001 %dir%*.*

BN - тип посылки (неизменно)
11751 - бик (неизменно)
дата в формате годмесяцчисло ( у меня вышло только как %date:~8,4%%date:~3,2%%date:~0,2% )
0001 - номер сообщения за день
%dir%*.* - собсвтенно забор любых файлов из c:\311fiz\files\

нужно чтобы он создавал архив арж в папке c:\311fiz\ с именем BN117511407210001.arj

а если уже есть такой архив , BN117511407210002.arj
если 0002 есть то 0003 и т.д.




© OSzone.net 2001-2012