Search code examples
batch-filevbscriptshortcut

Batch exe to shortcut


Currently, I am attempting to create a shortcut for a program, I was able to do so shown in the code below.

echo Set oWS = WScript.CreateObject("WScript.Shell") > CreateShortcut.vbs
echo sLinkFile = "%HOMEDRIVE%%HOMEPATH%\Desktop\Unturned Dedicated Server\Unturned - Server.lnk" >> CreateShortcut.vbs
echo Set oLink = oWS.CreateShortcut(sLinkFile) >> CreateShortcut.vbs
echo oLink.TargetPath = "C:\Program Files (x86)\Steam\steamapps\common\Unturned\Unturned.exe" >> CreateShortcut.vbs
echo oLink.Save >> CreateShortcut.vbs
cscript CreateShortcut.vbs
del CreateShortcut.vbs

The issue is I need the target path to be, "C:\Program Files (x86)\Steam\steamapps\common\Unturned\Unturned.exe" -batchmode -nographics +secureserver/ahhh

How would I go about doing so?


Solution

  • To do this as a , which creates a vbscript, runs it, then deletes it, I'd suggest that you do it like this:

    @(  Echo Set WshShell = WScript.CreateObject("WScript.Shell"^)
        Echo strDesktop = WshShell.SpecialFolders("Desktop"^)
        Echo str32bitPF = WshShell.ExpandEnvironmentStrings("%%ProgramFiles(x86)%%"^)
        Echo Set oFSO = CreateObject("Scripting.FileSystemObject"^)
        Echo If Not (oFSO.FolderExists(strDesktop + "\Unturned Dedicated Server"^)^) Then
        Echo   oFSO.CreateFolder(strDesktop + "\Unturned Dedicated Server"^)
        Echo End If
        Echo Set oShellLink = WshShell.CreateShortcut(strDesktop + "\Unturned Dedicated Server\Unturned - Server.lnk"^)
        Echo oShellLink.Arguments = "-batchmode -nographics +secureserver/ahhh"
        Echo oShellLink.TargetPath = str32bitPF + "\Steam\steamapps\common\Unturned\Unturned.exe"
        Echo oShellLink.WindowStyle = 1
        Echo oShellLink.Hotkey = "CTRL+SHIFT+U"
        Echo oShellLink.Description = "Launch Unturned"
        Echo oShellLink.WorkingDirectory = strDesktop + "\Unturned Dedicated Server"
        Echo oShellLink.Save) > "CreateShortcut.vbs"
    @%__AppDir__%cscript.exe /NoLogo "CreateShortcut.vbs"
    @Del "CreateShortcut.vbs"
    

    However, you can also do it directly from your without writing to a file too.

    <!-- :
    @%__AppDir__%cscript.exe /NoLogo "%~f0?.wsf"
    @GoTo :EOF
    -->
    <Job><Script Language="VBScript">
    Set WshShell = WScript.CreateObject("WScript.Shell")
    strDesktop = WshShell.SpecialFolders("Desktop")
    str32bitPF = WshShell.ExpandEnvironmentStrings("%ProgramFiles(x86)%")
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    If Not (oFSO.FolderExists(strDesktop + "\Unturned Dedicated Server")) Then
    oFSO.CreateFolder(strDesktop + "\Unturned Dedicated Server")
    End If
    Set oShellLink = WshShell.CreateShortcut(strDesktop + "\Unturned Dedicated Server\Unturned - Server.lnk")
    oShellLink.Arguments = "-batchmode -nographics +secureserver/ahhh"
    oShellLink.TargetPath = str32bitPF + "\Steam\steamapps\common\Unturned\Unturned.exe"
    oShellLink.WindowStyle = 1
    oShellLink.Hotkey = "CTRL+SHIFT+U"
    oShellLink.Description = "Launch Unturned"
    oShellLink.WorkingDirectory = strDesktop + "\Unturned Dedicated Server"
    oShellLink.Save
    </Script></Job>
    

    If you wish to add your own batch-file code to this version it must be inserted just above the @GoTo :EOF line.