這裏是scenerio,我在「FilestoMerge」目錄中有一些文本文件。我使用VbScript來遍歷目錄中的每個文件,並將內容合併到「Output」目錄中的一個'output.txt'文件中。之後,合併成功,我想刪除原始文件。如何確保父文件中的內容是否已成功寫入輸出文件,然後再刪除它。下面是我的Vbscript合併文件。如何確保輸出文件已成功寫入VbScript中?
Set fso = CreateObject("Scripting.FileSystemObject")
set OutputFile = fso.CreateTextFile(strOutputFileName)
Set WMIService = GetObject("winmgmts:\\" & "." & "\root\cimv2")
Set FileList = WMIService.ExecQuery _
("ASSOCIATORS OF {Win32_Directory.Name='C:\Users\xxxx\yyyy\FilesToMerge'} Where " _
& "ResultClass = CIM_DataFile")
For Each file In FileList
Set objTextFile = fso.OpenTextFile(file.Name, ForReading)
strText = objTextFile.ReadAll
objTextFile.Close
OutputFile.WriteLine strText <<<<need to make sure this is successfull, then only delete
fso.DeleteFile(file.Name)
Next
OutputFile.Close
有沒有一個它不成功的場合?我認爲它失敗的唯一原因是如果該命令在打開文件時發生錯誤。我不認爲'.WriteLine'返回任何東西,所以沒有什麼可以獲得的。如果線路成功,我認爲沒有理由認爲它失敗。 – Matt 2014-09-24 02:38:17
@Matt感謝您的回覆。我認爲你是對的,不可能出現寫作失敗的情況,除非如你所說,這個文件正在被另一個進程使用。現在我有一個問題 - 如果我的腳本要讀取的文件實際上是由另一個進程寫入的,並且尚未完成,因爲它是一個大約50 MB的大文件,那麼會發生什麼? – Praati 2014-09-26 00:34:07
如果該文件已經在另一個進程中打開,則嘗試打開該文件會導致可能需要處理的異常,如果這是可行的話。如果你在問題的使用者的地址中使用'On Error'部分,你的答案將會有所幫助。 – Matt 2014-09-26 02:08:57