VBScript错误代码800A0409,未终止的字符串常量,在第1行

时间:2014-07-17 11:42:44

标签: vbscript

我在第1行,第54行收到错误代码800A0409,未终止字符串常量,代码如下。

Option Explicit

Dim ObjProgressMsg
Dim fso,objText,strVstup,strVystup,f,dtmVyt,dtmF,dDiff,fName,fExt,fShort,dtmAkt,tx,msgText
Dim strMessage,strWindowTitle,strTemp,wshShell,objTempMessage,strTempVBS


Set fso = CreateObject("Scripting.FileSystemObject") 
Set objText = fso.GetFile("l:\bat\posledni.den")
strVstup = "l:\filefolder\"
strVystup = "l:\backup"

dtmVyt = objText.DateLastModified

msgText = "Some text about copying and renaming" & VbCrLf & "files, please wait..."

ProgressMsg msgText

For Each f In fso.GetFolder(strVstup).Files

    dtmF = f.DateLastModified

    dDiff = DateDiff("s", dtmF, dtmVyt)

    If dDiff < 0 Then
          ProgressMsg ""
          WScript.Echo f
    End If

Next

WScript.Echo "Some text about the task being finished."




Function ProgressMsg( strMessage )
' Written by Denis St-Pierre
' Displays a progress message box that the originating script can kill in both 2k and XP
' If StrMessage is blank, take down previous progress message box
' Using 4096 in Msgbox below makes the progress message float on top of things
' CAVEAT: You must have   Dim ObjProgressMsg   at the top of your script for this to work as described
    Set wshShell = WScript.CreateObject( "WScript.Shell" )
    strTEMP = wshShell.ExpandEnvironmentStrings( "%TEMP%" )
    If strMessage = "" Then
        ' Disable Error Checking in case objProgressMsg doesn't exists yet
        On Error Resume Next
        ' Kill ProgressMsg
        objProgressMsg.Terminate( )
        ' Re-enable Error Checking
        On Error Goto 0
        Exit Function
    End If
        strTempVBS = strTEMP + "\" & "Message.vbs"     'Control File for reboot

    ' Create Message.vbs, True=overwrite
    Set objTempMessage = fso.CreateTextFile( strTempVBS, True )
    objTempMessage.WriteLine( "MsgBox""" & strMessage & """, 4096, """ & "a_sp_rano" & """" )
    objTempMessage.Close

    ' Disable Error Checking in case objProgressMsg doesn't exists yet
    On Error Resume Next
    ' Kills the Previous ProgressMsg
    objProgressMsg.Terminate( )
    ' Re-enable Error Checking
    On Error Goto 0

    ' Trigger objProgressMsg and keep an object on it
    Set objProgressMsg = WshShell.Exec( "%windir%\system32\wscript.exe " & strTempVBS )

End Function

在搜索比posledni.den文件的上次修改日期更新的文件时,脚本应显示msgbox。然后,一旦找到文件,它应该关闭msgbox并回显它找到的文件。 如果我改变它,它的工作正常:

msgText = "Some text about copying and renaming" & VbCrLf & "files, please wait..."

到此:

msgText = "Some text about copying and renaming" & "files, please wait..."

删除VbCrLf似乎可以解决这个错误,只是没有突然发生换行。我无法弄清楚为什么它的表现如此,我做错了什么。对此问题的各种见解都将非常感激。

提前谢谢你。 :)

1 个答案:

答案 0 :(得分:1)

执行生成的.vbs时发生错误。你做的是:

>> msg1 = "A" & vbCrLf & "B"
>> code = "MsgBox """ & msg1 & """"
>> WScript.Echo code
>>
MsgBox "A
B"
>> Execute code
>>
Error Number:       1033
Error Description:  Unterminated string constant

你应该做什么:

>> msg1 = """A"" & vbCrLf & ""B"""
>> WScript.Echo msg1
>>
"A" & vbCrLf & "B"
>> code = "MsgBox " & msg1 & ", 4096"
>> WScript.Echo code
>>
MsgBox "A" & vbCrLf & "B", 4096
>> Execute code
>>
>> <-- no news are good news; message displayed