获取:Microsoft VBScript编译错误:应为';)';

获取:Microsoft VBScript编译错误:应为';)';,vbscript,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 Shortc

我对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 ')'

这是创建快捷方式的好方法还是有更好更详细的方法呢?

脚本有一些问题

在回答您的问题时,您收到错误的原因是VBScript只支持一种数据类型-变量。在函数“Create_Shortcut”中,您将参数定义为特定的数据类型,例如“as String”和“as Integer”。删除数据类型声明后,您就解决了问题—类似于

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

Private Sub Create_ShortCut(TargetPath, ShortCutPath, ShortCutname, WorkPath, Window_Style, IconNum)
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
我对该脚本的另一个担忧是,它看起来像是在处理按钮单击(私有子命令1_click);如果这是一个VB脚本而不是VB 6应用程序,则不需要按钮单击处理程序。但是,您需要调用您的函数,因此如果删除按钮单击的签名以及关闭““结束Sub”,您将正确调用您的函数。但是

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

该函数仍然不起作用,但最后一个问题是,调用该方法时,您正在传入一个空的工作目录路径;工作目录是必需的,因此请确保将其传递给您的方法。请从以下位置更改代码:

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

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

Private Sub Create_ShortCut(TargetPath, ShortCutPath, ShortCutname, WorkPath, Window_Style, IconNum)
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

您的脚本有一些问题

在回答您的问题时,收到错误的原因是VBScript仅支持一种数据类型-变量。在函数“创建快捷方式”中,您将参数定义为特定的数据类型,例如“作为字符串”和“作为整数”。删除数据类型声明,您就解决了您的问题—有点像

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

Private Sub Create_ShortCut(TargetPath, ShortCutPath, ShortCutname, WorkPath, Window_Style, IconNum)
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
我对这个脚本的另一个担忧是,它看起来像是在处理一个按钮点击(Private Sub Command1_click);如果这是一个VB脚本而不是VB6应用程序,则不需要按钮单击处理程序。但是,您确实需要调用您的函数,因此如果您删除了按钮单击的签名以及结束“End Sub”,您将正确地调用您的函数。然而

“创建快捷方式”方法中的代码也有问题。正如在上面的描述中一样,只有一种数据类型-Variant-因此从声明变量的两行中删除“as Object”

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

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

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

Private Sub Create_ShortCut(TargetPath, ShortCutPath, ShortCutname, WorkPath, Window_Style, IconNum)
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

如果我的.exe应用程序接受一些输入参数,我该怎么办。例如,创建快捷方式“C:\MyApp\bin\test\u application.exe localhost 1500-exec=“Excute this”、“Desktop”、“My test”、“C:\MyApp\bin”,0,1您可以使用arguments属性设置快捷方式的参数,例如:MyShortcut.arguments=“some args”谢谢您的帮助……但是即使我将窗口样式指定为0(不可见),创建的快捷方式会正常打开窗口。是否有其他方法可以使窗口打开不可见?如果.exe应用程序接受一些输入参数,我该怎么办?例如创建快捷方式“C:\MyApp\bin\test\u application.exe localhost 1500-exec=“Excute this”,“Desktop”,“my test”,“C:\MyApp\bin”,0,1您可以使用arguments属性设置快捷方式的参数,例如:MyShortcut.arguments=“some args”谢谢您的帮助…但是即使我将窗口样式指定为0(不可见),创建的快捷方式可以正常打开窗口。是否有其他方法可以使窗口以不可见的方式打开