我收到语法错误,但我不明白为什么。 我目前正在用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
我还没到达。 如果我运行这个我收到以下错误信息: 抱歉翻译不好(我是德国人)
Line: 23
token/char: 5
Error: Syntaxerror
Code: 800A03EA
Source: Compilationerror in Microsoft VBScript
那就是" E"我的第一个Elseif。 但是自从我在Youtube和几个网站上查找语法是正确的。 即使我在第20行调用回声(" abcde"),我也从未得到任何回声。 我唯一的猜测是,我使用了任何错误的对象或违反了我还不知道的任何规则,因为我缺乏经验。
答案 0 :(得分:1)
您的代码存在一些问题。
单行语法(If foo Then bar
)不支持ElseIf
,即使这样做,您仍然需要将整个语句放在一行中。在您的情况下,必须使用块语法:
If condition1 Then
...
ElseIf condition2 Then
...
ElseIf condition3 Then
...
Else
...
End If
eqv
不是VBScript中的有效比较运算符。使用=
。
Day
是一个内置函数,因此它不应该用作变量。 Month
,Year
,Hour
和Minute
也是如此。改为使用不同的变量名称。总结一下,改变一下:
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
并且错误将消失。
答案 1 :(得分:0)
试试这个
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