VB Skript níže vytvoří zástupce.
Je třeba uložit do souboru .wsf – například mymk_shortcut.wsf . Poté nakopírovat do windows\system32 (nebo jinam kam páte proměnnou PATH).
Použití
mymk_shortcut /A /R „C:\zde bude\vytvoren\zastupce“ „C:\obecne\moje.pdf“
Po spuštění bude v „C:\zde bude\vytvoren\zastupce“ vytvořen soubor „moje.lnk“ jenž je zástupce pro „C:\obecne\moje.pdf“.
Pokud bude vynechán parametr /R bude jméno zástupce „moje.pdf.lnk“.
Pokud bude vynechán parametr /A tak se skript zeptá na jméno zástupce před vytvořením (předvyplněno bude „moje.lnk“ nebo „moje.pdf.lnk“).
Ještě má skript parametr /V při jehož použití se zobrazí hláška o úspěšném vytvoření zástupce.
<job>
<script language="VBScript">
helpTxt = vbNewLine & vbNewLine & "Usage: mymk_shortcut [/A] [/R] [/V] linkDir target " & vbNewLine
helpTxt = helpTxt & " linkDir: directory where new link will be created " & vbNewLine
helpTxt = helpTxt & " target: path to the file/folder linked " & vbNewLine
helpTxt = helpTxt & " /A: Auto - new link name will be automatically created from target - without it user is asked for new link name" & vbNewLine
helpTxt = helpTxt & " /R: Remove Extension - remove extension of original filename when creating shortcut filename" & vbNewLine
'// helpTxt = helpTxt & " /L: Add .lnk extension - add ".lnk" extension to original file name when creating shortcut filename" & vbNewLine
helpTxt = helpTxt & " /V: Verbose - prints output even on success, by default only on errors "
If WScript.Arguments.Count < 2 Then
MsgBox helpTxt
Wscript.Quit
End If
Set fso = CreateObject("Scripting.FileSystemObject")
'// read required command line parameters
linkDir = Trim(WScript.Arguments.Item(WScript.Arguments.Count-2))
target = Trim(WScript.Arguments.Item(WScript.Arguments.Count-1))
'// remove trailing backslash in linkDir & target if necessary
If(Right(linkDir,1) = "\") Then
linkDir = Left(linkDir,Len(linkDir)-1)
End If
If(Right(target,1) = "\") Then
linkDir = Left(target,Len(target)-1)
End If
'// check first param
If NOT fso.FolderExists(linkDir) Then
MsgBox "Error: linkDir """ & linkDir & """ must be existing folder" & helpTxt
Wscript.Quit
End If
'// check second param and find out if it is Folder or File
If fso.FolderExists(target) Then
isTargetFolder = 1
Elseif fso.FileExists(target) Then
isTargetFile = 1
Else
MsgBox "Error: target """ & target & """ must be existing folder/file" & helpTxt
Wscript.Quit
End If
'// read optional command line parameters
'target = Trim(WScript.Arguments.Item(WScript.Arguments.Count-1))
extraOptions = ""
For i = 0 to WScript.Arguments.Count-3
extraOptions = extraOptions & Trim(WScript.Arguments.Item(i))
Next
extraOptions = UCase(extraOptions)
extraOptionAuto = InStr(extraOptions,"A")
extraOptionRemoveExtension = InStr(extraOptions,"R")
'// extraOptionAddLnkExtension = InStr(extraOptions,"L") '// without .lnk link is not working so option removed
extraOptionVerbose = InStr(extraOptions,"V")
'MsgBox "Options: A:"&extraOptionAuto&" R:"&extraOptionRemoveExtension&" V:"&extraOptionVerbose '// DEBUG
'// default link name created from target file name
linkName = fso.GetFileName(target)
'// replace extension if set
If extraOptionRemoveExtension Then
linkName = fso.GetBaseName(linkName)
End If
'// Add .lnk
linkName = linkName & ".lnk"
'// ask user for name of new link to be created
'// if file/folder of specified name already exists user is informed and asked to give another name
'// if auto parameter is specified user is not asked in first loop
tmpErrMsg = ""
Do
If extraOptionAuto = 0 Then
linkName = InputBox(tmpErrMsg & vbNewLine & "Enter the name for new link or press Cancel to end.", "Create Link", linkName)
If linkName = "" Then
Wscript.Quit
End If
End If
link = linkDir & "\" & linkName
If fso.FileExists(link) OR fso.FolderExists(link) Then
tmpErrMsg = "Error: File or folder """ & link & """ already exists, choose another."
link = ""
extraOptionAuto = 0 '// We have to reset otherwise we will end-up with endless
End If
Loop While link = ""
targetFolder = fso.GetParentFolderName(target)
'// MsgBox "target: " & target & vbNewLine & "link: " & link & vbNewLine & "targetFolder: " & targetFolder '// DEBUG
'// Wscript.Quit '// DEBUG
Set oWS = WScript.CreateObject("WScript.Shell")
Set oLink = oWS.CreateShortcut(link)
oLink.TargetPath = target
oLink.WorkingDirectory = targetFolder
'// oLink.Arguments = ""
'// oLink.Description = "Pole komentar"
'// oLink.HotKey = ""
'// oLink.IconLocation = ""
'// oLink.WindowStyle = "1"
oLink.Save
'// (if VERBOSE option is specified output is always printed, otherwise only on error)
If fso.FileExists(link) OR fso.FolderExists(link) Then
If extraOptionVerbose Then
MsgBox "Link " & link & " created"
End If
Else
MsgBox "Error: could not create link " & link
End If
</script>
</job>
