VBscript错误输入超过文件末尾

时间:2014-09-25 01:26:24

标签: vbscript

我有3个脚本,其中所有脚本都必须以正确的顺序重复运行。

  1. 第一个脚本 - 根据PC的列表(在文本文件输入中列出)执行进程,具体取决于它们是否在线/离线。它输出在线PC和另一个离线PC列表
  2. 第二个脚本 - 从原始列表和第一个脚本的输出获取PC差异,以了解哪些机器已从第一个脚本运行该过程
  3. 第三个脚本 - 使用差异,更新输入列表
  4. 下面的脚本是第3个脚本。每当我运行它时,它都会以“输入文件末尾”错误结束。我已经尝试了几次修改,它总是以这种方式结束。

    我对第三个脚本的想法是第二个文件的Differences.txt输出仍然需要从第一个脚本运行进程,所以我只是删除原始输入文件并将其重命名为新的输出文件。但是,我还必须跟踪已经完成的过程,因此我必须将它们列出/附加到另一个文本文件。

    提前感谢您的帮助。

    Option Explicit
    Dim objFso
    Dim Fso
    Dim firstfile,secondfile,file,fileText
    
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    If objFSO.FileExists("Machines.ini") Then objFSO.DeleteFile("Machines.ini")
    
    Set Fso = WScript.CreateObject("Scripting.FileSystemObject")
    Fso.MoveFile "Differences.txt", "Machines.ini"
    
    firstfile="Notified.txt"
    secondfile="Notified-all.txt"
    
    Set fso=CreateObject("Scripting.FileSystemObject")
    Set file=fso.OpenTextFile(firstfile)
    fileText = fileText & file.ReadAll() & vbCrLf
    file.Close
    
    Set file=fso.OpenTextFile(secondfile)
    fileText=filetext & file.ReadAll()
    file.Close
    
    set file=fso.CreateTextFile(secondfile,true)
    file.Write fileText
    file.close
    

1 个答案:

答案 0 :(得分:11)

在空文件上调用ReadAll时出现错误。检查AtEndOfStream属性并仅在内容为false时阅读内容:

If Not file.AtEndOfStream Then fileText = fileText & file.ReadAll