Vbscript Vbs抛出语法错误。我能';我不明白为什么

Vbscript Vbs抛出语法错误。我能';我不明白为什么,vbscript,Vbscript,我得到一个语法错误,但我不明白为什么。 我目前正在用vbs编写一些脚本,我是vbs新手。 由于这个脚本的行为让我困惑,我认为我做错了什么。 这是我的密码: Option Explicit Const read =1,overwrite=2,append=8 'constants for parameters of OpenTextFile command Dim fos,i,ofile,text,month,day,year,hour,minute,day2 Set fos =Create

我得到一个语法错误,但我不明白为什么。 我目前正在用vbs编写一些脚本,我是vbs新手。 由于这个脚本的行为让我困惑,我认为我做错了什么。 这是我的密码:

Option Explicit

Const read =1,overwrite=2,append=8 'constants for parameters of OpenTextFile command

Dim fos,i,ofile,text,month,day,year,hour,minute,day2

Set fos =CreateObject("Scripting.FileSystemObject")
'fos.OpenTextFile("path",type)

ofile =fos.OpenTextFile("C:\Users\martin\Desktop\txt\ReminderV1_0\daten\termin1.txt",1)

'read a date from a txt file
day=ofile.readline
month=ofile.readline
year=ofile.readline
hour=ofile.readline
minute=ofile.readline
set ofile=ofile.close

wscript.echo "abcde" 'i never get a messagebox "abcde" and i dont know why

If day eqv "01" then day2="first" 'use of eqv or = seems to be meaningless
ElseIf day="02"  day2="second" 
ElseIf day="03"  day2="third"
Else day2=day & "-th"
End if

msgbox "2"

text="the " & day2 & " of "& month & " " & year & " at "& hour &":"& minute &" o'clock"

msgbox "3"
msgbox text
它应该从文件夹中的txt文件(名称:“termin1”)中读取日期和时间,如下所示:

01
07
2014
19
20
我没走多远。 如果运行此操作,我会收到以下错误消息: 对不起,可能翻译不好(我是德国人)

这就是我的第一个孩子的“E”。 但由于我在Youtube和几个网站上查到了它,语法是正确的。 而且,即使我在第20行中调用了回声(“abcde”),我也从未收到任何回声。 我唯一的猜测是,我使用了任何错误的对象,或者违反了任何我还不知道的规则,因为我缺乏经验。

试试这个

If day = "01" then day2="first" 'use of eqv or = seems to be meaningless
  ElseIf day="02"  then day2="second" 
  ElseIf day="03" then day2="third"
  Else day2=day & "-th"
 End if

您的代码有几个问题

  • 单行语法(
    If-foo-Then-bar
    )不支持
    ElseIf
    ,即使它支持,您仍然必须将整个语句放在一行中。在您的情况下,必须使用块语法:

    If condition1 Then
      ...
    ElseIf condition2 Then
      ...
    ElseIf condition3 Then
      ...
    Else
      ...
    End If
    
  • eqv
    在VBScript中不是有效的比较运算符。使用
    =

  • 是一个内置函数,因此不应将其用作变量。这同样适用于,和。改用不同的变量名
  • 总而言之,改变这一点:

    day=ofile.readline
    month=ofile.readline
    year=ofile.readline
    hour=ofile.readline
    minute=ofile.readline
    set ofile=ofile.close
    
    wscript.echo "abcde" 'i never get a messagebox "abcde" and i dont know why
    
    If day eqv "01" then day2="first" 'use of eqv or = seems to be meaningless
    ElseIf day="02"  day2="second" 
    ElseIf day="03"  day2="third"
    Else day2=day & "-th"
    End if
    
    为此:

    dayRead    = ofile.ReadLine
    monthRead  = ofile.ReadLine
    yearRead   = ofile.ReadLine
    hourRead   = ofile.ReadLine
    minuteRead = ofile.ReadLine
    ofile.Close
    
    Wscript.Echo "abcde"
    
    If dayRead = "01" Then
      day2 = "first"
    ElseIf dayRead = "02" Then
      day2 = "second"
    ElseIf dayRead = "03" Then
      day2 = "third"
    Else
      day2 = dayRead & "-th"
    End If
    

    错误将消失。

    非常有用,谢谢。现在一切正常。到目前为止:)
    dayRead    = ofile.ReadLine
    monthRead  = ofile.ReadLine
    yearRead   = ofile.ReadLine
    hourRead   = ofile.ReadLine
    minuteRead = ofile.ReadLine
    ofile.Close
    
    Wscript.Echo "abcde"
    
    If dayRead = "01" Then
      day2 = "first"
    ElseIf dayRead = "02" Then
      day2 = "second"
    ElseIf dayRead = "03" Then
      day2 = "third"
    Else
      day2 = dayRead & "-th"
    End If