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

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

Ветеран


Contributor


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

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


Попробуйте так:
Код: Выделить весь код
@Echo Off

Set "Out=Q:\testbat\ps"

Set "Pre=PS*_2763_0020_"
Set "End=_*_2763_0020.xml"

Set "In=Q:\testbat\ps"

Set "MaskOther=*.xml"

Set "Dt=%date:~8,2%%date:~3,2%%date:~0,2%"

Call :Number  "%Out%" "PSEI_2763_0020_" "%In%" "1 2 3 4 9" "Q:\testbat\ps\PSEI_Log.log"
Call :Number  "%Out%" "PSKR_2763_0020_" "%In%" "5 6" "Q:\testbat\ps\PSKR_Log.log"
Call :Number  "%Out%" "Other_" "%In%" "" "Q:\testbat\ps\Other_Log.log"

GoTo :Eof

:Number

Set "P_N=%~2"
Set "M_N=%~1\%P_N%%Dt%"
Set "NN=1000"

If Exist %5 FOR /F "usebackq tokens=1,2" %%i IN (%5) DO (
	If %%i==%Dt% Set "NN=1%%j"
)

Set /A NN=%NN%+1

Set "LL=0"

If Not %4==""  (

FOR %%N IN (%~4) DO (
	If Exist "%~3\%Pre%%%N%End%" (
		Echo ARJ32.exe m -e "%M_N%%NN:~-3%.arj" "%~3\%Pre%%%N%End%"
		Set "LL=1"
	)
)
) Else (
	If Exist "%~3\%MaskOther%" (
		Echo ARJ32.exe m -e "%M_N%%NN:~-3%.arj" "%~3\%MaskOther%"
		Set "LL=1"
	)
)

If "%LL%"=="1" Echo %Dt% %NN:~-3%>%5
Опять я вставил для отладки перед arj Echo, которое при боевом применении надо убрать. И снова кусок, который я не тестировал, но который, я считаю, предпочтительнее того, что вверху
Код: Выделить весь код
If Not %4==""  (

FOR %%N IN (%~4) DO (
	If Exist "%~3\%Pre%%%N%End%" (
		ARJ32.exe m -e "%M_N%%NN:~-3%.arj" "%~3\%Pre%%%N%End%"
	)
)
) Else (
	If Exist "%~3\%MaskOther%" (
		ARJ32.exe m -e "%M_N%%NN:~-3%.arj" "%~3\%MaskOther%"
	)
)

If Exist "%M_N%%NN:~-3%.arj" Echo %Dt% %NN:~-3%>%5
В вызове процедуры вместо "C:\testbat\ps\PSEI_Log.log" если лог файлы там же, куда создаются архивы, резонно написать, например, "%Out%\PSEI_Log.log". Вы вольны располагать лог-файлы где Вам нравится, лишь бы они не удалялись.

Кстати, в предыдущей задаче правильнее вместо
If Exist %In%\s*_*_*_%%N*.txt написать
If Exist "%~3\s*_*_*_%%N*.txt" так как %In% передаётся %3 аргументом

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


Последний раз редактировалось megaloman, 03-07-2014 в 22:52.

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:20, 03-07-2014 | #7