2014-02-19 162 views
0

我在服務器之間每晚都有一批到robocopy文件夾。 生成日誌文件並在最後使用Blat.exe發送郵件批處理腳本讀取第一行

我想僅在robocopy失敗時發送郵件。 我看到它是讀取由「命令成功完成」開頭的日誌文件的第一行,如果ROBOCOPY運行沒有問題的唯一途徑

Command complete successfully. 
------------------------------------------------------------------------------- 
    ROBOCOPY  ::  Robust File Copy for Windows  ::  Version XP010 
------------------------------------------------------------------------------- 
    Started : Tue Feb 18 23:00:01 2014" 

所以我想修改我的腳本來讀取這個第1行和如果它等於 「命令成功完成」,它繞過blat.exe和電子郵件發送

下面的腳本:

@Echo off 
SET dizaine=A%time:~0,1%B 
if A1B==%dizaine% goto OK 
if A2B==%dizaine% goto OK 
:ZERO 
SET dizaine=0 
goto fin 
:OK 
SET dizaine=%time:~0,1% 
goto fin 

:FIN 

set a=%Date:~-4%-%Date:~-7,-5%-%Date:~-10,-8%_%dizaine%%Time:~-10,-9%%Time:~-8,-6%%Time:~-5,-3% 
echo %a% 

set logfile=C:\script\Logs\HW_database_sync%a%.log 

net use H: \\x.x.x.x\SPB /USER:nobody nobody >> %logfile% 

robocopy "C:\CIS" H:\DataBase\D /MIR /COPY:DAT /V /FP /NP /LOG+:%logfile% /FFT /R:0 /W:0 /TEE 

net use H: /delete 

C:/script/blat.exe %logfile% -to [email protected] -f [email protected] -server xxx.xxx.biz 

感謝 問候

回答

0
set /p complete=<logfile.txt 

IF ["%complete%"]==["Command complete successfully."] echo successful 

這應該希望讓你去

0

這將啓動BLAT僅如果字符串沒有在日誌文件中找到。

那個字符串不是真的在第1行嗎?

find /i "Command complete successfully" <%logfile% >nul || C:\script\blat.exe %logfile% -to [email protected] -f [email protected] -server sub1.example.biz 
相關問題