Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/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
Loops vbscript获取文本中的最后一行_Loops_Vbscript_Outlook 2010 - Fatal编程技术网

Loops vbscript获取文本中的最后一行

Loops vbscript获取文本中的最后一行,loops,vbscript,outlook-2010,Loops,Vbscript,Outlook 2010,我正在尝试获取.HOL文件中的最后一行。 它将获得最后一行,但每次运行脚本时,它都会堆叠前面的行 Dim lastLine Dim objFile Dim objFSO Const ForReading = 1 Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.OpenTextFile("C:\Desktop\OUTLOOK.HOL", ForReading) Do Until objF

我正在尝试获取.HOL文件中的最后一行。 它将获得最后一行,但每次运行脚本时,它都会堆叠前面的行

Dim lastLine
Dim objFile
Dim objFSO

Const ForReading = 1

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:\Desktop\OUTLOOK.HOL", ForReading)

Do Until objFile.AtEndOfStream

  lastLine = objFile.ReadLine

Loop

objFile.Close

Wscript.Echo lastLine
我要做的是一个脚本,它去掉任何比当前日期早的日期,然后在.HOL文件的底部添加一个新日期。我需要最后一行的原因是,我可以选择那个日期,再加上两周

What the Echo Looks like Run 1                      Run 2
Date1                                               Date1         
                                                    Date2
Run 3                                      
Date1
Date2
Date3

And so forth if you get it. (Id post picture but I cant yet)
=========== .HOL File ======= 
[Test Days] 5
Test Day, 5/3/2013
Test Day, 5/17/2013
Test Day, 5/31/2013
Test Day, 6/14/2013
Test Day, 6/28/2013
简单的解决方法:

    dim x

    Do Until objFile.AtEndOfStream
      x = objFile.ReadLine
      If objFile.atEndOfStream Then
         lastLine = x
      End If
    Loop
以下功能将在2010年1月31日之前增加2周,您只需从您的行中编写:

    DateAdd("ww",2,"31-Jan-10")

几次编辑。。已经有一段时间没有vbscript了

如果要替换文件中的最后一个日期,可以尝试以下操作:

Set fso = CreateObject("Scripting.FileSystemObject")

text = Split(fso.OpenTextFile("C:\Desktop\OUTLOOK.HOL").ReadAll, vbNewLine)

Set f = fso.OpenTextFile(filename, 2)
For i = 0 To UBound(text)-1
  f.WriteLine text(i)
Next

lastline = Split(text(UBound(text)), ",")
newdate = DateAdd("ww", 2, lastline(1))
lastline(1) = Year(newdate) & "/" & Right("0" & Month(newdate), 2) _
                & "/" & Right("0" & Day(newdate), 2)
f.WriteLine Join(lastline, ",")

f.Close

当文件已经在流的末尾时,就没有什么可读的了,因此您的命令将只是阻塞。这将使脚本处于无限循环中。为什么需要另一个if来表示一旦到达文件末尾就存储变量?当循环到达终点时,不会已经存储最后一行了吗?.AtEndOfStream是在文件的最后一行之后运行还是在最后一行停止?哦,谢谢你的加入!!!这比我以前做的更好,因为它不会阻塞,这个只会传递流中的最后一行,因为readline是移动到下一行的函数。。duh?谢谢大家的帮助!这是一个丰富的信息!谢谢。你说的“叠前几行”是什么意思?此外,您不能简单地在文件底部附加日期
.HOL
文件具有特定的格式。简单地附加一个日期会破坏这种格式。因此,请更详细地解释您想要删除什么以及您想要添加什么。举一个例子会很有帮助。包括格式。我只需要文件的最后日期再加两周。假设第二行(在.HOL文件中)是2013年1月1日的测试日(第一行是[Test Days]50)。文件的最后一行是2013年6月6日的测试日,所以我得到的结果是,如果第二行日期<今天日期,我删除了该行(有效)然后在.HOL文件的底部添加一个新日期。因此,我将输入我的所有日期。运行脚本。第一次运行=6/20/2012(正确)第二次运行=7/4/2013和6/20/2012每次运行都将在最后一个日期之后(我称之为堆叠)有一个额外的日期。