获取:Microsoft VBScript编译错误:预期')'

时间:2013-09-19 16:03:21

标签: vbscript

我是vb脚本的新手,想要为我的.exe应用程序创建一个快捷方式,它将在一个不可见的窗口中打开。这是我写的代码

Option Explicit

Private Sub Command1_Click()
'This will Create a ShortCut of test_application in our desktop, its name is "My-Test",    invisible windows when run, use the 2nd icon as the Shortcut icon.'

Create_ShortCut "C:\MyApp\bin\test_application.exe", "Desktop", "My-Test", , 0, 1
End Sub

Sub Create_ShortCut(ByVal TargetPath As String, ByVal ShortCutPath As String, ByVal    ShortCutname As String, Optional ByVal WorkPath As String, Optional ByVal Window_Style As Integer, Optional ByVal IconNum As Integer)

Dim VbsObj As Object
Set VbsObj = CreateObject("WScript.Shell")

Dim MyShortcut As Object
ShortCutPath = VbsObj.SpecialFolders(ShortCutPath)
Set MyShortcut = VbsObj.CreateShortcut(ShortCutPath & "\" & ShortCutname & ".lnk")
MyShortcut.TargetPath = TargetPath
MyShortcut.WorkingDirectory = WorkPath
MyShortcut.WindowStyle = Window_Style
MyShortcut.IconLocation = TargetPath & "," & IconNum
MyShortcut.Save

End Sub

我将脚本存储为test.vbs并以下列方式执行

C:\Users\me\Desktop>cscript test.vbs

它给了我以下错误

Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.

C:\Users\me\Desktop\test.vbs(9, 38) Microsoft VBScript compilation error: Expected ')'

这是创建快捷方式的好方法吗?还是有更好更冗长的方法吗?

1 个答案:

答案 0 :(得分:4)

您的脚本存在一些问题。

在回答您的问题时,您收到错误的原因是因为VBScript仅支持一种数据类型 - Variant。在您的函数“Create_Shortcut”中,您将参数定义为特定的数据类型,例如“As String and”As Integer“。删除数据类型声明,您已经解决了问题 - 有点像。

下一个问题是VBScript不支持可选参数。因此,您还需要删除“Create_Shortcut”方法签名中的Optional关键字。最终,方法签名将如下所示:

Private Sub Create_ShortCut(TargetPath, ShortCutPath, ShortCutname, WorkPath, Window_Style, IconNum)

我对这个脚本的另一个担忧是看起来它正在处理单击按钮(Private Sub Command1_Click);如果这是一个VB脚本而不是VB 6应用程序,则不需要按钮单击处理程序。但是,您需要调用您的函数,因此如果您删除按钮单击的签名以及结束“End Sub”,您将正确调用您的函数。然而....

“Create_Shortcut”方法中的代码也存在问题。正如上面的描述一样,只有一种数据类型 - 变体 - 所以从声明变量的两行中删除“As Object”。

该函数仍然不起作用,但最后一个问题是因为在调用方法时传入一个空的工作目录路径;工作目录是必需的,所以一定要把它传递给你的方法。更改您的代码:

Create_ShortCut "C:\MyApp\bin\test_application.exe", "Desktop", "My-Test", , 0, 1

Create_ShortCut "C:\MyApp\bin\test_application.exe", "Desktop", "My-Test", "C:\MyApp\bin" , 0, 1

因此,最终,您的VBS文件将如下所示:

Create_ShortCut "C:\MyApp\bin\test_application.exe", "Desktop", "My-Test", "C:\MyApp\bin" , 0, 1

Private Sub Create_ShortCut(TargetPath, ShortCutPath, ShortCutname, WorkPath, Window_Style, IconNum)
    Dim VbsObj
    Set VbsObj = CreateObject("WScript.Shell")

    Dim MyShortcut
    ShortCutPath = VbsObj.SpecialFolders(ShortCutPath)
    Set MyShortcut = VbsObj.CreateShortcut(ShortCutPath & "\" & ShortCutname & ".lnk")
    MyShortcut.TargetPath = TargetPath
    MyShortcut.WorkingDirectory = WorkPath
    MyShortcut.WindowStyle = Window_Style
    MyShortcut.IconLocation = TargetPath & "," & IconNum
    MyShortcut.Save
End Sub