vbscript从未知目录的.exe创建快捷方式

时间:2016-06-22 21:23:21

标签: vbscript

我在县政府机构的IT办公室工作,除其他事项外,我们的任务是为员工成像和设置计算机。我们的一个应用程序提供商为我们的应用程序提供了一个安装程序,在安装后,它会在父文件夹中创建随机文件夹名称。我正在寻找一个VBScript,它将从具有未知子文件夹名称的目录创建.exe的快捷方式,并将其放在Public Desktop文件夹中。我还发现供应商在两个不同的子文件夹中包含了同一个应用程序的两个实例。我只对使用第一个.exe位置的路径感兴趣。我在网上发现了一个剧本,(不幸的是,我不记得我在哪里找到它。所以,我无法赞美写作的人),如果路径已知,则会创建一个快捷方式。我通过添加一些变量并包含更多快捷方式的图标设置来编辑脚本。我对脚本非常陌生,因此,我无法修改此脚本以查找.exe的路径,然后使用该路径创建快捷方式。第一个.exe位于三个子文件夹深,所有三个文件夹都有随机名称。非常感谢任何帮助。

' This script creates a shortcut of MyApp and places it in the Public Desktop folder for all users

Option Explicit
Dim objWSH, objFSO, link, desktopPath, AppPath, IconPath, DirPath

DirPath = "C:\Program Files\MyApp Folder\Randomized1\Randomized2\Randomized3"
IconPath = "C:\Program Files\MyApp Folder\Randomized1\Randomized2\Randomized3\ApplicationIcon.ico"
AppPath = "C:\Program Files\MyApp Folder\Randomized1\Randomized2\Randomized3\MyApp.exe"
Set objWSH = WScript.CreateObject("WScript.Shell") 
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
desktopPath = "C:\Users\Public\Desktop"

' If file exists define where the shortcut should point to

If objFSO.FileExists(AppPath) Then    
  set link = objWSH.CreateShortcut(desktopPath & "\MyApp.lnk")


  ' Define icon settings
  link.TargetPath = AppPath
  link.IconLocation = IconPath
  link.Description = "MyApp"
  link.WindowStyle = 2
  link.WorkingDirectory = DirPath
  link.Save
Else
  WScript.Echo "Program file does not exist"

 End if

2 个答案:

答案 0 :(得分:1)

您应该可以修改它以查找所需的文件。

从目录及其子目录中获取所有文件

GetFileList返回FileInformation的1维数组。

Function getFileList(localRoot, fld, ftpArray)
    Dim fso, f, baseFolder, subFolder, ftpFile, i

    Set fso = CreateObject("Scripting.Filesystemobject")

    If IsNull(fld) Then
        Set baseFolder = fso.GetFolder(localRoot)
    Else
        Set baseFolder = fld
    End If

    For Each f In baseFolder.Files

        If IsNull(ftpArray) Then
            ReDim ftpArray(0)
        Else
            i = UBound(ftpArray) + 1
            ReDim Preserve ftpArray(i)
        End If
        Set ftpFile = New FileInformation
        ftpFile.setValues localRoot, fso, f
        Set ftpArray(i) = ftpFile

    Next

    For Each subFolder In baseFolder.SubFolders
        getFileList localRoot, subFolder, ftpArray
    Next

    getFileList = ftpArray
End Function

Class FileInformation
    Public FilePath
    Public FolderPath
    Public FileExtension

    Public Sub setValues(localRoot, fso, f)
        FilePath = f.Path
        FolderPath = f.ParentFolder.Path
        FileExtension = fso.GetExtensionName(FilePath)
    End Sub
End Class

这将搜索收集的所有FileInformation。

  • 文件路径:f.FilePath
  • 文件夹路径:f.FolderPath
  • 文件扩展名:f.FileExtension
Const localRootFolder = "C:\Program Files\MyApp Folder"

Dim filelist, f
filelist = getFileList(localRoot, Null, Null)
For Each f In filelist

Next

答案 1 :(得分:0)

经过更多研究和测试,我决定使用命令行来查找路径。在获得正确的语法之后,它可以完美地运行。我在下面列出了我的最终剧本。我希望这可以帮助别人。我去了Running command line silently with VbScript and getting output?,帮助我在VBScript中使用命令行。然后我找到了这个https://blogs.technet.microsoft.com/heyscriptingguy/2007/11/08/hey-scripting-guy-how-can-i-remove-a-value-from-the-path-environment-variable/,其中显示了如何使用 替换 功能,以便从路径中删除MyApp.exe。然后我将其添加到我的原始脚本中并且它有效。

tsconfig.json