CMD/BAT - нумерация формируемых архивов

Ответить
Аватара пользователя
umagonj

CMD/BAT - нумерация формируемых архивов

Сообщение umagonj »

Доброе утро!

есть такой скрипт:

: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

Re: CMD/BAT - нумерация формируемых архивов

Сообщение Iska »

umagonj, мы должны гадать по куску пакетного файла? Что такое «%script_root%», «%utils_folder%» и т.д, и т.п.
Аватара пользователя
Iska

Re: CMD/BAT - нумерация формируемых архивов

Сообщение Iska »

хм, не думал что эти переменные могут быть важны

"%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

Re: CMD/BAT - нумерация формируемых архивов

Сообщение Iska »

Цитата umagonj:



хм, не думал что эти переменные могут быть важны
CMD/BAT - нумерация формируемых архивов





Цитата umagonj:



спасибо, проблема не в етом куске была.
CMD/BAT - нумерация формируемых архивов




umagonj, дело не в том, важны или не важны, в том или не в том «куске». Дело в том, что Вы видите всю информацию, а выкладываете частичную и предлагаете по этой частичной информации гадать.
Аватара пользователя
umagonj

Re: CMD/BAT - нумерация формируемых архивов

Сообщение umagonj »

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 и т.д.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»