这里是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