Играл с findstr в пакете, чтобы получить запись о событии в Windows, поскольку это старое программное обеспечение, которое не делает этого по собственной инициативе.
Пакет открывает самый последний файл журнала и проверяет наличие слова не удалось записать в журнал событий, если он его находит, это работает, если файл журнала находится на моем рабочем столе, но не если это собственный каталог в данных программы:
FOR /F "delims=|" %%I IN ('DIR "C:\ProgramData\**supplier**\**application**\Backup\Logs\*.txt" /B /O:D') DO SET NewestFile=%%I
FINDSTR "failed" "%NewestFile%"
IF NOT ERRORLEVEL 1 EVENTCREATE /T WARNING /ID 963 /L APPLICATION /SO **application Backup** /D "**application** Backup failed"
pause
Заранее спасибо.
Обновление: извините, я должен был упомянуть, что я работал от имени администратора, а также убедился, что файл в каталоге PD не используется. Ошибка, которую я возвращаю:
FINDSTR: Cannot open *.txt
DIR "C:\ProgramData\**supplier**\**application**\Backup\Logs\*.txt" /B /O:D
. Вывод этой последней строки будет содержимым%%I
, а затем содержимым%NewestFile%
. Хорошо, теперь, как вы ясно заметили, результатом является просто имя каталога или файла без его диска или пути. Как вы ожидаете, чтоFINDSTR
найдет его, не сообщая ему местонахождение? Теперь попробуйте сFINDSTR "C:\ProgramData\**supplier**\**application**\Backup\Logs\%NewestFile%"
. - person Compo   schedule 15.06.2020