TargetPath为空 - 在远程驱动器上

时间:2015-09-06 08:59:45

标签: vbscript shortcut

我似乎无法让WShell为objShortcut.TargetPath返回一个值,尽管它传递的是全名。

我一直在读,WShell可能存在远程磁盘问题,而且我一直在使用外部驱动器。

在我的C:驱动器上使用位于我的C:驱动器上的文件的快捷方式上测试它之后,我发现它仍然不起作用。它不是回显traget路径,而是回显一个空白值。

编辑。谢谢你的提示。

getshorty.vbs

Dim objWSHShell
set objWSHShell = CreateObject("WScript.Shell")  
Set wshShell    = WScript.CreateObject("WScript.Shell")  
strTargetPath=objWSHShell.ExpandEnvironmentStrings(WScript.Arguments.Item(0))  
Set objShortcut = wshShell.CreateShortcut(strTargetPath)  
WScript.Echo objShortcut.TargetPath  
Set objShortcut = Nothing  
Set wshShell    = Nothing  

2 个答案:

答案 0 :(得分:0)

当然TargetPath属性会导致""(长度为零的字符串),如果.lnk.url文件不存在

CreateShortcut方法返回WshShortcut对象或WshURLShortcut对象。只需调用CreateShortcut方法即可打开现有的快捷方式,但不会导致创建快捷方式。

option explicit
On Error GoTo 0

Dim wshShell, strTargetPath, objShortcut 
Set wshShell  = WScript.CreateObject("WScript.Shell")
strTargetPath = wshShell.ExpandEnvironmentStrings(WScript.Arguments.Item(0))

Set objShortcut = wshShell.CreateShortcut(strTargetPath)

WScript.Echo TypeName(objShortcut) & vbTab & VarType(objShortcut) _
           & vbNewLine & "FullName"    & vbTab & objShortcut.FullName _
           & vbNewLine & "TargetPath"  & vbTab & objShortcut.TargetPath
If TypeName(objShortcut) = "IWshShortcut" Then            
  WScript.Echo      "Arguments"   & vbTab & objShortcut.Arguments _
      & vbNewLine & "Description" & vbTab & objShortcut.Description _
      & vbNewLine & "WorkingDir"  & vbTab & objShortcut.WorkingDirectory
End If

<强>输出

==>dir /B d:\xxxx\*Shortcut.*
32421790 Shortcut.url
pisma - Shortcut.lnk

==>cscript D:\VB_scripts\SO\32421790.vbs "d:\xxxx\32421790 Shortcut.url"
IWshURLShortcut 8
FullName        d:\xxxx\32421790 Shortcut.url
TargetPath      http://stackoverflow.com/q/32421790/3439404

==>cscript D:\VB_scripts\SO\32421790.vbs "d:\xxxx\nonexistent Shortcut.url"
IWshURLShortcut 8
FullName        d:\xxxx\nonexistent Shortcut.url
TargetPath

==>cscript D:\VB_scripts\SO\32421790.vbs "d:\xxxx\pisma - Shortcut.lnk"
IWshShortcut    8
FullName        d:\xxxx\pisma - Shortcut.lnk
TargetPath      D:\bat\SU\Files\ruzna pisma.png
Arguments
Description     font samples
WorkingDir      D:\bat\SU\Files

==>cscript D:\VB_scripts\SO\32421790.vbs "d:\xxxx\nonexistent Shortcut.lnk"
IWshShortcut    8
FullName        d:\xxxx\nonexistent Shortcut.lnk
TargetPath
Arguments
Description
WorkingDir

==>

答案 1 :(得分:0)

这是一个创建快捷方式的功能:

Call Shortcut("C:\The Absolute Path of your application goes here","Name of your Shortcut")
'*********************************************************************************
Sub Shortcut(PathApplication,Name)
    Dim objShell,DesktopPath,objShortCut,MyTab
    Set objShell = CreateObject("WScript.Shell")
    MyTab = Split(PathApplication,"\")
    If Name = "" Then
        Name = MyTab(UBound(MyTab))
    End if
    DesktopPath = objShell.SpecialFolders("Desktop")
    Set objShortCut = objShell.CreateShortcut(DesktopPath & "\" & Name & ".lnk")
    objShortCut.TargetPath = Dblquote(PathApplication)
    ObjShortCut.IconLocation = "%SystemRoot%\system32\SHELL32.dll,-25"
    objShortCut.Save
End Sub
'*********************************************************************************
Function DblQuote(Str)
    DblQuote = Chr(34) & Str & Chr(34)
End Function
'*********************************************************************************