VBScript写入文本文件时新行追加至首行旁而非末尾的问题排查
解决VBScript文件追加时新行与首行同行的问题
我一眼就看出问题出在哪了——你第一次迭代写入临时文件的时候,没有给内容加上换行符!
当你用Write()方法写入字符串时,只会把字符串原封不动地写入文件,末尾不会自动添加Windows系统的换行标记(vbCrLf)。所以处理后的原文件内容末尾是没有换行的,第二次迭代用WriteLine()追加时,系统会认为你是接着上一行的末尾继续写,自然就出现了两行内容挤在一行的情况。
修复方案
只需要修改第一次迭代中写入临时文件的代码,把Write()换成WriteLine(),或者手动给写入的字符串加上换行符就行。下面是修改后的完整代码:
For Iterator = 1 to 2 sF1 = "C:\Users\ig.ext\Desktop\Automation\Archivo.txt" '#Opening file Dim objFS Dim objFile strTemp = "C:\Users" & Environment("UserName") & "\Desktop\Automation\Temp.txt" Set objFS = CreateObject("Scripting.FileSystemObject") If Iterator = 1 Then Set objFile = objFS.OpenTextFile(sF1) content = objFile.ReadLine '#Creating temporal file Set objOutFile = objFS.CreateTextFile(strTemp,True) Else Set objFile = objFS.OpenTextFile(sF1, 8) End If sResultado = "004;J2Yf;18090023;20200725;00000509990;VOLVO;D;YFWfS9Z9lu06ftR78;D;FA;18090023" If Iterator = 1 Then '# 修改这里:用WriteLine替代Write,自动添加换行符 objOutFile.WriteLine(sResultado) objOutFile.Close objFile.Close objFS.DeleteFile(sF1) objFS.MoveFile strTemp,sF1 else '#Write line and close objFile.Writeline(sResultado) objFile.Close End If Next
为什么这样改?
WriteLine()方法会在写入的字符串末尾自动添加Windows系统的换行符(vbCrLf),这样处理后的原文件末尾就有了换行标记。- 第二次迭代用
OpenTextFile(sF1, 8)以追加模式打开文件后,WriteLine()写入的内容就会自动从新的一行开始,完美符合你的预期结果。
如果你不想用WriteLine(),也可以手动拼接换行符:objOutFile.Write(sResultado & vbCrLf),效果是完全一样的。
内容的提问来源于stack exchange,提问作者Ivan Garrido
相关产品推荐
相关产品推荐

