Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
读取txt并将最后一行发送到电子邮件地址-vbscript_Vbscript_Wsh_Text Files - Fatal编程技术网

读取txt并将最后一行发送到电子邮件地址-vbscript

读取txt并将最后一行发送到电子邮件地址-vbscript,vbscript,wsh,text-files,Vbscript,Wsh,Text Files,你好 我回来了哈哈:-)所以我有下一个问题,我希望有人能帮我。。。 我知道我有很多问题,但我会努力学习vbscript:-) 情况: 此脚本读取(每5分钟)txt的最后一行并将其发送到我的电子邮件地址 问题: 我会在5分钟内检查txt,但现在每5分钟就会有一封邮件。当txt中有新内容时,我将尝试仅获取一封新邮件 Option Explicit Dim fso, WshShell, Text, Last, objEmail Const folder = "C:\test.txt" Set f

你好

我回来了哈哈:-)所以我有下一个问题,我希望有人能帮我。。。 我知道我有很多问题,但我会努力学习vbscript:-)

情况: 此脚本读取(每5分钟)txt的最后一行并将其发送到我的电子邮件地址

问题: 我会在5分钟内检查txt,但现在每5分钟就会有一封邮件。当txt中有新内容时,我将尝试仅获取一封新邮件

Option Explicit

Dim fso, WshShell, Text, Last, objEmail

Const folder = "C:\test.txt"

Set fso=CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")

Do
    Text = Split(fso.OpenTextFile(Datei, 1).ReadAll, vbCrLF)
    Letzte = Text(UBound(Text))
                       Set objEmail = CreateObject("CDO.Message")
                    objEmail.From = "test@test.com"
                    objEmail.To = "test@test.com"
                    objEmail.Subject = "Control" 
                    objEmail.Textbody = Last
                    objEmail.Configuration.Fields.Item _
                        ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
                    objEmail.Configuration.Fields.Item _
                        ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _
                            "smtpip" 
                    objEmail.Configuration.Fields.Item _
                        ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
                    objEmail.Configuration.Fields.Update
                    objEmail.Send

                    WScript.Sleep 300000
Loop
有人能帮我吗


请原谅我的英语不好…

您只收到一封邮件的原因是UBound,它只会给您数组的最后一个元素

要为每行发送邮件,您必须在发送邮件后记住上限,然后在行上循环

Option Explicit 

Dim fso, WshShell, Text, Last, objEmail 

Const folder = "C:\test.txt" 

Set fso=CreateObject("Scripting.FileSystemObject") 
Set WshShell = WScript.CreateObject("WScript.Shell") 

dim index = 1

Do 
    Text = Split(fso.OpenTextFile(Datei, 1).ReadAll, vbCrLF) 
    Letzte = Text(UBound(Text)) 

                WScript.Sleep 300000 

for i = index to UBound(Text) 
                   Set objEmail = CreateObject("CDO.Message") 
                objEmail.From = "test@test.com" 
                objEmail.To = "test@test.com" 
                objEmail.Subject = "Control"  
                objEmail.Textbody = Last 
                objEmail.Configuration.Fields.Item _ 
                    ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 
                objEmail.Configuration.Fields.Item _ 
                    ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _ 
                        "smtpip"  
                objEmail.Configuration.Fields.Item _ 
                    ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 
                objEmail.Configuration.Fields.Update 
                objEmail.Send 
Next 

index = UBound(Text) 

Loop 
试试这个

Option Explicit

Dim fso, WshShell, Text, Last, objEmail, linecount

Const folder = "C:\test.txt"
linecount = 0

Set fso=CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")

Do
    Text = Split(fso.OpenTextFile(Datei, 1).ReadAll, vbCrLF)
    if UBound(Text) > linecount Then
         linecount = UBound(Text)
         Letzte = Text(UBound(Text))
                       Set objEmail = CreateObject("CDO.Message")
                    objEmail.From = "test@test.com"
                    objEmail.To = "test@test.com"
                    objEmail.Subject = "Control" 
                    objEmail.Textbody = Last
                    objEmail.Configuration.Fields.Item _
                        ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
                    objEmail.Configuration.Fields.Item _
                        ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _
                            "smtpip" 
                    objEmail.Configuration.Fields.Item _
                        ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
                    objEmail.Configuration.Fields.Update
                    objEmail.Send
     End If

                    WScript.Sleep 300000
Loop

每隔5分钟它就会收到一封邮件,其中包含test.txt的最后一行!我现在的问题是,我只有在txt中有新内容时才会收到邮件。所以我会在5分钟内检查txt文件,如果其中有新内容(只有最后一行),我会收到一封邮件。我对我的英语很感兴趣。关键字时间戳例如谢谢,但这是相同的问题所有5分钟我成为一个邮件…但我只会收到一个邮件时,有一个新的行在txt。。。