Создать событие с пакетными файлами - PullRequest
4 голосов
/ 24 февраля 2010

Вот чего я хочу достичь. У нас есть база данных архивов электронной почты, которую мы оптимизируем еженедельно. На данный момент мы входим в систему вручную, запускаем команду и следим за состоянием. Оптимизация может занять от 3 до 12 часов, что заставляет нас входить в систему каждые несколько часов и проверять, завершена она или нет и т. Д. Что я хочу сделать, это создать пакетный файл и запланировать задачу для запуска пакетного файла. Теперь, когда запускается пакетный файл, i-событие генерирует идентификатор события (а затем я могу захватить этот идентификатор конца и сгенерировать электронную почту через нашу систему мониторинга), и аналогично, когда оптимизация завершается, генерировать идентификатор события в журнале приложения. Вот что я хотел сделать: -

@echo off
cd C:\Program Files\Quest Software\ArchiveManager
C:\WINDOWS\system32\cmd.exe /K "Archive Full Text Index Service" –optimize
IF errorlevel 1 Goto Stoppd
exit
:Stoppd
eventcreate /l application /t information /so 9999 /id 1 /d "the optimization has started "
:end

Мне очень плохо с пакетными файлами и скриптами. Может кто-нибудь, пожалуйста, посоветуйте, как создать событие.? Спасибо

Ответы [ 2 ]

1 голос
/ 24 февраля 2010

Во-первых, операция cmd /k должна вернуть errorlevel из 0, если она была запущена правильно, поэтому ваш вызов eventcreate должен произойти до вашей команды exit, а не после вашей :Stoppd метки у вас есть это в вашем примере.

Во-вторых, если вы хотите, чтобы ваша архивная операция запускалась как порожденный процесс, вы должны поставить start перед строкой cmd:

start C:\WINDOWS\system32\cmd.exe /K "Archive Full Text Index Service" –optimize

Это позволит запустить ваш процесс, а затем текущая консоль сможет продолжить и вызвать ваше событие 'archive has started'.

В-третьих, чтобы получить событие, которое будет создано после завершения операции архивирования, у вас есть пара вариантов:

  1. вы можете объединить две команды вместе, используя &:

    start C:\WINDOWS\system32\cmd.exe /K "Archive Full Text Index Service" –optimize & eventcreate ... 
  2. вы можете поместить свой архивный вызов и последующий вызов события в пакетный файл, а затем вызвать его в своем cmd /k вызове.

    start C:\WINDOWS\system32\cmd.exe /K myArchiveAndEventBatch.bat
0 голосов
/ 24 февраля 2010

Было бы приемлемо не создавать идентификатор события и просто использовать программу электронной почты, такую ​​как Blat , чтобы отправлять электронную почту, когда вы хотите получить предупреждение?

...