VBScript--objfile.writeline

VBScript--objfile.writeline,vbscript,Vbscript,好的。。快到了。。output.txt文件仍然有点不正确,因为它不完整……而且它不发送电子邮件。再说一次,我肯定这是件愚蠢的事。谢谢你的帮助 出错时继续下一步 dim dosendmail set dosendmail= false Set objFSO = CreateObject("Scripting.FileSystemObject") Set objoutFile = objFSO.CreateTextFile("output.txt", True) Set objServerlist

好的。。快到了。。output.txt文件仍然有点不正确,因为它不完整……而且它不发送电子邮件。再说一次,我肯定这是件愚蠢的事。谢谢你的帮助

出错时继续下一步

dim dosendmail
set dosendmail= false

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objoutFile = objFSO.CreateTextFile("output.txt", True)
Set objServerlist = objFSO.OpenTextFile("servers.txt", 1)

Do Until objServerList.AtEndOfStream
strComputer = objServerList.ReadLine


strOldestFile = ""
dtmOldestDate = Now


Set objFolder = objFSO.Getfolder(strcomputer)

intFolderSize = Int((objFolder.Size / 1024) / 1024)

If intFolderSize > 1 Then

    strOldestFile = ""
    dtmOldestDate = Now


    intFolderSize = Int((objFolder.Size / 1024) / 1024)

     If intFolderSize > 1 and doSendmail = False Then
        doSendMail=true
           Set colFiles = objFolder.Files
           For Each objFile in colFiles
                strFile = objFile.Path
                dtmFileDate = objFile.DateCreated
                If dtmFileDate < dtmOldestDate Then
                     dtmOldestDate = dtmFileDate
                     strOldestFile = strFile

                End If

           Next
     End If  


    objoutfile.writeline strcomputer & stroldestfile  & ":  " & dtmoldestdate

    If DoSEndMail = True Then

        Set myobj = CreateObject("Scripting.FileSystemObject")

        const ForReading = 1
           Set f = myobj.OpenTextFile("output.txt", ForReading)
           ReadAllText =   f.ReadAll

        Dim objEmail
        strEmailFrom = "from@email.com"
        strEmailTo ="me@email.com"
        strSubject ="TEST"
        strMessage =strMessage & ReadAllText

          Set objEmail = CreateObject("CDO.Message")

          objEmail.From = strEmailFrom
          objEmail.To= strEmailTo
          objEmail.Subject = strSubject
          objEmail.HTMLBody = strMessage

        objEmail.Configuration.Fields.Item _
            ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        objEmail.Configuration.Fields.Item _
            ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _
                "smtpaddress"
        objEmail.Configuration.Fields.Item _
            ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
        objEmail.Configuration.Fields.Update 
    End If    

End If        

Loop
dim dosendmail
设置dosendmail=false
设置objFSO=CreateObject(“Scripting.FileSystemObject”)
设置objoutFile=objFSO.CreateTextFile(“output.txt”,True)
设置objServerlist=objFSO.OpenTextFile(“servers.txt”,1)
直到objServerList.AtEndOfStream
strComputer=objServerList.ReadLine
strOldestFile=“”
dtmOldestDate=Now
设置objFolder=objFSO.Getfolder(strcomputer)
intFolderSize=Int((objFolder.Size/1024)/1024)
如果intFolderSize>1,则
strOldestFile=“”
dtmOldestDate=Now
intFolderSize=Int((objFolder.Size/1024)/1024)
如果intFolderSize>1且doSendmail=False,则
doSendMail=true
设置colFiles=objFolder.Files
对于colFiles中的每个objFile
strFile=objFile.Path
dtmFileDate=objFile.DateCreated
如果dtmFileDate

我觉得我很接近。。最后。

在继续之前,清除Do…循环中的
objFSO
的重新初始化,与
objFolder
和复制的其余变量相同

关于发送电子邮件:最简单的方法是在顶层声明变量
doSendMail
,将其初始化为false,并在循环中将其设置为true

If intFolderSize > 1 AND doSendMail = False Then
    doSendMail = True
End If

最后,在您完成循环后检查
doSendMail
,并相应地采取行动。

参见StackOverflow post中的答案。这完全取决于您运行脚本的方式:cscript或wscript。乍一看,每个
objFile变量的
都会覆盖最初声明的输出文件。我应该指定。我正在使用cscript。谢谢Filburt。就是这样!哦!!!好啊现在,有一个更有趣的问题,我在这里已经深不可测了:如果&仅当INTFOLDERSIZE的值大于1时,我如何才能让它有条件地发送电子邮件?这是可行的,顺便说一下:好。。费尔伯特,干得好。。我快到家了。。请参阅上面的新代码。。它不是发送电子邮件;同样,我敢肯定,你把你的电子邮件发送代码放在Do…循环中是很愚蠢的——如果你附加了包含你收集的结果的output.txt文件,这肯定不是你想要的。