Имя пользователя:
Пароль:
 

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

Ветеран


Contributor


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

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


Вот решение в первом приближении. Уточните пути к каталогам
Код: Выделить весь код
@Echo Off

Set  "MailIn=Z:\req_dir"
Set "MailOut=Z:\cert_dir"
Set "MailArc=Z:\Box_Arc"

Set  "ExtIn=reg"
Set "ExtOut=cer"
Set  "ExtOk=OK"

Set  "SoftIn=\\Server\Import"
Set "SoftOut=\\Server\Export"

If Not Exist "%MailArc%" Md "%MailArc%"

If Exist "%SoftOut%\*.%ExtOut%" (
	FOR %%f IN ("%SoftOut%\*.%ExtOut%") DO (
		If Exist "%MailArc%\%%~nf.%ExtIn%" Ren "%MailArc%\%%~nf.%ExtIn%" %%~nf.%ExtIn%.%ExtOk%"
		Move /Y "%%f" "%MailOut%\" >nul
	) 
)

TASKKILL /F /IM notepad.exe >nul 2>nul
Del "%MailArc%\___%~nx0.log"

Pushd "%MailArc%"
FOR /F "usebackq delims=" %%i IN (`Dir "%MailArc%\*.%ExtIn%" /B /A:-D /O:-D 2^>nul`) DO Echo %%~ti %%i Request unanswered >>"%MailArc%\___%~nx0.log"
Popd

If Exist "%MailIn%\*.%ExtIn%" (
	Copy "%MailIn%\*.%ExtIn%" "%MailArc%\" >nul
	Move /Y "%MailIn%\*.%ExtIn%" "%SoftIn%\" >nul
)

rem Del "%MailArc%\*.%ExtOk%" 2>nul

If Exist "%MailArc%\___%~nx0.log" START "unanswered" /MAX Notepad.exe "%MailArc%\___%~nx0.log"
Как работает батник:
1. Удаляем вспомогательный log-файл (если он есть) из архивной папки.

2. При наличии в выходном каталоге обработчика файла, например, 1234.cer, переименовывается файл в архивной папке 1234.reg в 1234.reg.ok. Это свидетельствует о том, что выходной файл на этот запрос получен.
Перемещаем 1234.cer в выходной каталог почты.

3. Просматриваем архивную папку на наличие файлов *.reg. Если такие файлы существуют, то их имя записываем в log-файл. В норме, если на все запросы получены ответы, таких файлов нет: все они переименованы в *.reg.ok или вообще удалены за ненадобностью.

4. Пришедшие во входную папку почты файл *.reg копируются в архивную папку и перемещаются во входную папку обработчика.

5. Log-файл, если существует (если имеются необработанные файлы), отображается в notepad.exe

Конечно, можно notepad.exe не использовать, а применить какой-нибудь мессенджер. Когда-то я пользовался командой Net send. Но тут уже надо развивать задачу под Ваши конкретные условия.
В принципе, все файлы *.ok можно удалить. У меня это закомментировано и не работает - можете исправить сами.
Опять же, необработанные запросы можно вернуть ручками во входной ящик почты для повторной обработки, если это не нарушает корректной работы обработчика. Вам виднее.

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


Последний раз редактировалось megaloman, 09-11-2016 в 10:45.

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

Отправлено: 21:19, 08-11-2016 | #9