Я не знаю, является ли пакетный файл правильным решением этой проблемы, но я опишу, что мне нужно сделать и что я уже сделал.
Я использую пакетный файл, запускающий Robocopy, а затем Blat для отправки файлов журнала ежедневной задачи копирования файлов на целевой адрес. Вместо ежедневной отправки файлов журнала, независимо от успеха или неудачи копии, я хотел бы ТОЛЬКО отправлять файл журнала, если в журнале присутствует ошибка.
Пример моей существующей партии ниже. Обратите внимание, я не программист и имею только элементарное представление о написании сценариев.
_____
REM - Daily Copy Procedure
@Echo Off
robocopy.exe "C:\TEMP\Source" "C:\TEMP\Destination" *.* /r:1 /w:1 /nfl /ndl /mt /tee /np /log:"robocopy_1.log"
Blat.exe robocopy_1.log -to emyemailaddress -serverSMTP mysmtpserver
_____
Я хотел бы добавить что-то между строкой Robocopy и строкой Blat, которая будет читать файл журнала, и ЕСЛИ он обнаружит значение больше нуля в столбце FAILED, ТОГДА приступит к отправке файла журнала на мой адрес электронной почты, в противном случае выйдите из пакета без работает Блат.
Total Copied Skipped Mismatch FAILED Extras
Dirs : 1 0 1 0 0 0
(РЕДАКТИРОВАТЬ)
Хорошо, я решил свою проблему с помощью простого решения. Я подходил к этому, вероятно, самым сложным путем. Когда что-то пойдет не так, Robocopy предоставляет подробные описания ошибок в своих лог-файлах. Все, что мне нужно было сделать, это получить файл bat для анализа файла журнала на наличие слова «ОШИБКА», и все в порядке. Это решение забрасывает широкую сеть, я не ищу здесь никаких изысков, поэтому команда IF ELSE сделала свое дело.
REM @ECHO OFF
REM Run Robocopy with appropriate arguments.
robocopy.exe "C:\TEMP\Source" "C:\TEMP\Destination" *.* /r:1 /w:1 /nfl /ndl /s /mt /tee /np /log:"robocopy_1.log"
REM Search for errors in the robocopy logfile and email if any are found.
FIND /c "ERROR" C:\TEMP\robocopy_1.log
IF %errorlevel% equ 1 (EXIT) ELSE (goto mailfile)
REM Email the logfile if problems are found otherwise the BAT will exit before this step.
:mailfile
Blat.exe robocopy_1.log -to myemail -serverSMTP mysmtp