"AAA.job" (aaa.js)
Started 2010/7/7 下午 11:59:00
"BBB.job" (bbb.js)
Started 2010/7/7 下午 11:59:00
"CCC.job" (ccc.exe)
Started 2010/7/8 上午 12:00:00
"DDD.job" (ddd.EXE)
Started 2010/7/8 上午 12:00:00
"AAA.job" (aaa.js)
Finished 2010/7/8 上午 12:01:06
Result: The task completed with an exit code of (0).
"CCC.job" (ccc.exe) 2010/7/8 上午 12:03:00 ** WARNING **
The task was forced to close since its execution time exceeded the configured maximum.
You may want to go to the Settings page and increase the "Stop the scheduled task after" time.
"DDD.job" (ddd.EXE) 2010/7/8 上午 12:03:00 ** WARNING **
The task was forced to close since its execution time exceeded the configured maximum.
You may want to go to the Settings page and increase the "Stop the scheduled task after" time.
"EEE.job" (EEE.exe)
Started 2010/7/8 上午 12:05:00
"BBB.job" (BBB.js)
Finished 2010/7/8 上午 12:09:10
Result: The task completed with an exit code of (0).
這是小弟管的某機器的 scheduled tasks之 log
小弟實在不是知道怎麼下IF 來判定那麼多條件...........
有沒有哪位大大可以幫忙一下或提供方向....嗚嗚
或是用哪個工具可以比較簡單的完成這個問題呢?
拜託大家幫忙了!!
謝謝大家!!!
首先,您要會 VBScript 的讀取文字檔的方式。
<pre class="c" name="code">Const ForReading = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("D:\aaa.txt", ForReading) '檔案路徑請自行修改
Do Until objFile.AtEndOfStream
strLine = objFile.ReadLine '從檔案中每次讀取一整行文字
Wscript.Echo strCharacters
Loop
objFile.Close
接著您也要會如何寫入一個檔案。
<pre class="c" name="code">Const ForAppending = 8
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile("D:\aaaJob.txt", ForAppending, True)
objTextFile.WriteLine("This is test file.")
objTextFile.Close
會讀取及寫入檔案之後,就只剩下分析 aaa.txt 的內容了。比較直覺的方式;若有 10 個 job 那就要分析 aaa.txt 10 次,當然您也可以直接將 aaa.txt 一口氣讀入陣列中,再慢慢來分析。
接著,只要按照您說的規則,將每個 job 分別寫入相對應的文字檔即可。
<pre class="c" name="code">strLine = objFile.ReadLine
If strLine = """AAA.job"" (aaa.js)" then
'將 strLine 寫入 aaaJob.txt
strLine = objFile.ReadLine '馬上再讀取一行,這一行一定是 AAA.job 的執行時間。
'將 strLine 寫入 aaaJob.txt
'接著進入回圈,搜尋下一個"""AAA.job"" (aaa.js)"
Do Until objFile.AtEndOfStream
strLine = objFile.ReadLine
If strLine = """AAA.job"" (aaa.js)" then
'將 strLine 寫入 aaaJob.txt
strLine = objFile.ReadLine '馬上再讀取一行,這一行一定是 AAA.job 的結束時間
'將 strLine 寫入 aaaJob.txt
strLine = objFile.ReadLine '馬上再讀取一行,這一行一定是 AAA.job 的回傳結果
'將 strLine 寫入 aaaJob.txt
End If
Exit Do '已經分析完畢,即使檔案沒有讀完也不需要再讀,所以強制中斷迴圈。
Loop
End If
這樣就完成 aaa.job 的分析了,如果要再針對有問題的 job 分析,那您可以再多判斷是否有『WARING』的字出現。
<pre class="c" name="code">if Right(strLine,13) = "** WARNING **" then
'將 strLine 寫入 aaaJob.txt
strLine = objFile.ReadLine '馬上再讀取一行,這一行一定是『The task』開頭
'將 strLine 寫入 aaaJob.txt
strLine = objFile.ReadLine '馬上再讀取一行,這一行一定是『You may』開頭
'將 strLine 寫入 aaaJob.txt
End If
第 1 行,是從 strLine『右』邊往『左』邊取 13 個字元,只要等於『** WARNING ** 』就可以認定產生錯誤。
那麼接下來的連續兩行,一定是相關的錯誤訊息,這樣您也可以將有問題的 Log 擷取出來了。
在這,我只寫出程式的邏輯,詳細的語法,您可能還是需要上網查一下,您可以參考這個網址:http://www.ecaa.ntu.edu.tw/weifang/htmltutor/VBScript/C-VBsdocs/vbstoc.htm。
延伸閱讀:
http://www.microsoft.com/taiwan/technet/community/scriptcenter/filefolder/scrff58.mspx