![]() |
Контроль обработки файла
Доброго дня!
Есть 2 папки. В первую поступает файл-запрос, этот файл удаляется из папки, обрабатывается и во вторую папку выкладывается файл-ответ. Подскажите как можно (желательно средствами cmd) проконтролировать что на поступивший запрос в течение определенного времени поступил ответ? |
Для автоматизации действий, нужно четко представлять что именно нужно автоматизировать. Пока, я так вижу, посредством посредственной телепатии выясняется, что "на поступивший запрос в течение определенного времени поступил ответ". Как выглядит файл-запрос, как он связан с файлом-ответом, как определить что первому соответствует второй а не какой-то там абстрактный третий?
|
buravchik256, Мысли вслух
(1)--- В первую поступает файл-запрос
Имя файла? (2)--- этот файл удаляется из папки По моему скромному мнению этот файл просто удалять нельзя, его надо во время обработки скопировать (или переместить) в третью архивную папку. О чем сделать запись в лог-файл. Не может быть, что он сначала удаляется, а потом обрабатывается, как это Вы описали. (3)--- во вторую папку выкладывается файл-ответ. Чем запускается обработка? Имя файла? ИМХО, обработка должна запускаться батником, и это действие должно попасть в лог-файл. (4)--- проконтролировать что на поступивший запрос в течение определенного времени поступил ответ Это можно сделать, если имя файла-ответа каким-то образом соответствует файлу-запроса. Иначе только анализом лог-файла. В лог-файле запись типа: Время, взяли файл-запрос(имя), получили файл-ответ(имя). Это может быть реализовано в п. (3) Подозреваю, файл-ответ тоже не должен задерживаться в папке, он должен куда-то уйти? То есть, факт его формирования должен быть сразу же зафиксирован в лог-файле. Надо больше инфы о задаче ... |
Простите, что плохо расписал задачу
есть 2 каталога req_dir и cert_dir Файла запроса имеет вид 1234.req, помещается в каталог req_dir. Каждые 2 минуты запускается задание в планировщике перемещающее файл 1234.req для дальнейшей обработки (обычный bat-файл командой move). С дальнейшей обработкой файла всё ок. Через некоторое время (допустим не более 2-х минут) в папку cert_dir должен прийти файл 1234.cer (имя файла то же что и у запроса. Приходит если специализированное ПО не зависло). То же задание из планировщика перемещает в файл ответа из папки cert_dir. Как можно проконтролировать что в течение 2-х минут после перемещения файла 1234.req появился файл 1234.cer ? Заранее спасибо |
buravchik256,
а так, пойдет? Код:
@echo off |
Цитата:
|
Цитата:
Давайте пошагово уточним прохождение файлов. Попытаюсь, частично цитируя Ваше пояснение, уточнить описание процесса. Запрос 1234.reg приходит в каталог req_dir. Каждые 2 минуты задание перемещает 1234.req для обработки батником (условно назовём kuku.bat) командой move. Куда? В некий каталог обработчика (условно InSoft)?? Кто удаляет файл 1234.req из InSoft? В папку cert_dir (это выходная папка обработчика?) должен прийти файл 1234.cer То же задание (какое? kuku.bat ?) перемещает в файл ответа (Куда?) из папки cert_dir. Сделайте детальное описание каждого шага, чтобы не надо было ничего домысливать. |
megaloman,
Запрос имеет вид [NNNN].req, следующий файл запроса будет иметь имя [NNNN+1].req. Имя запроса файла инкреминируется, расширение файла всегда одно - *.req Ответ на запрос имеет тоже имя файла, но с расширением *.cer - [NNNN].cer , [NNNN+1].cer Если имя файла запроса [NNNN].req равно имени файла ответа [NNNN].cer - то они соответствуют друг другу. NNNN - целое число, ограничения длины нет. К примеру текущий номер шестизначный. Пошагово: Запрос 1234.req приходит в каталог req_dir. Каждые 2 минуты включается задание KUKU.bat: - перемещает файлы *.req (в данном случае 1234.req) командой MOVE из req_dir в сетевой каталог обработчика \\Server\Import - перемещает файлы *.cer (в данном случае файл будет иметь имя 1234.cer ) командой MOVE из из сетевого каталога обработчика \\Server\Export в каталог cert_dir Примечание: файл \\Server\Export\1234.cer появляется не мгновенно,а примерно через 30-60 секунд. Обработчик получающий файл \\Sever\Import\1234.req забирает информацию о запрсе себе в базу, более файл в каталоге не хранит. Обработчик выкладывает результат в папку \\Server\Export (оттуда файл 1234.cer будет перемещён заданием KUKU.bat в папку cert_dir) После появления файла 1234.cer в каталоге cert_dir файл обрабатывается уже другой машиной (отрабатывает своё задание на другой машине). Хочу проверить что обработчик в течение 2-х(3-х) минут выложил результат 1234.cer соответствующий запросу 1234.req |
Вот решение в первом приближении. Уточните пути к каталогам
Код:
@Echo Off 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 можно удалить. У меня это закомментировано и не работает - можете исправить сами. Опять же, необработанные запросы можно вернуть ручками во входной ящик почты для повторной обработки, если это не нарушает корректной работы обработчика. Вам виднее. |
Всё работает, спасибо большое! Гляньте ЛС.
|
Время: 11:26. |
Время: 11:26.
© OSzone.net 2001-