VBScript 将 link 发送到文件和文件夹
VBScript to send a link to file AND folder
在 Windows 7 中,我有一个 VBScript,当您在 Windows 资源管理器中右键单击时,它会在 Outlook 中创建一封带有 link 文件的电子邮件。该脚本是 运行,方法是创建它的快捷方式并将其添加到 %userprofile%\SendTo(当您右键单击该文件时,它会显示在“发送到”中)。目标是能够将 link 发送到文件和包含它的文件夹,而不是将其作为附件发送。它工作正常,除了它总是直接给文件一个 link 。我如何修改它以便它也为第二行中的文件夹提供 link?
Const olMailItem = 0
Const olFolderInbox = 6
If WScript.Arguments.Count = 0 Then
WScript.Quit
End If
Set objWMIService = GetObject("winmgmts:\.\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * From Win32_Process Where Name = 'outlook.exe'")
If colItems.Count = 0 Then
Set objOutlook = CreateObject("Outlook.Application")
Set objNamespace = objOutlook.GetNamespace("MAPI")
Set objFolder = objNamespace.GetDefaultFolder(olFolderInbox)
objFolder.Display
End If
strFile = WScript.Arguments.Item(0)
Set objOutlook = CreateObject("Outlook.Application")
Set objItem = objOutlook.CreateItem(olMailItem)
objItem.Subject = "Here is a link to a file..."
objItem.HTMLBody = "Link to the file: <A HREF=" & Chr(34) & "file://" & strFile & Chr(34) & ">" & strFile & "</A><BR>Link to the folder: <A HREF=" & Chr(34) & "file://" & strFile & Chr(34) & ">" & strFile & "</A>"
objItem.Display
可能是一个简单的答案,但我一直没弄明白。任何帮助,将不胜感激!
FileSystemObject
对象及其 GetParentFolderName
方法可以提供帮助。请注意,对于使用的任何方法(在下一个脚本中)保持:方法仅适用于提供的路径字符串。它不会尝试解析路径,也不会检查指定路径是否存在。
option explicit
Dim strFile, FSO, oFile
If WScript.Arguments.Count > 0 Then
strFile = WScript.Arguments.Item(0)
Else
strFile = "D:\Remote\bat\COCL\bu bu bu\somefile.ext"
End If
Set FSO = CreateObject("Scripting.FileSystemObject")
Wscript.Echo "FSO 'path' methods" & vbNewLine & "---------------------" _
& vbNewLine & "GetAbsolutePathName: " & FSO.GetAbsolutePathName( strFile) _
& vbNewLine & "GetParentFolderName: " & FSO.GetParentFolderName( strFile) _
& vbNewLine & "GetDriveName: " & FSO.GetDriveName( strFile) _
& vbNewLine & "GetBaseName: " & FSO.GetBaseName( strFile) _
& vbNewLine & "GetExtensionName: " & FSO.GetExtensionName( strFile) _
& vbNewLine & "GetFileName: " & FSO.GetFileName( strFile)
Set FSO = Nothing
Wscript.Quit
在 Windows 7 中,我有一个 VBScript,当您在 Windows 资源管理器中右键单击时,它会在 Outlook 中创建一封带有 link 文件的电子邮件。该脚本是 运行,方法是创建它的快捷方式并将其添加到 %userprofile%\SendTo(当您右键单击该文件时,它会显示在“发送到”中)。目标是能够将 link 发送到文件和包含它的文件夹,而不是将其作为附件发送。它工作正常,除了它总是直接给文件一个 link 。我如何修改它以便它也为第二行中的文件夹提供 link?
Const olMailItem = 0
Const olFolderInbox = 6
If WScript.Arguments.Count = 0 Then
WScript.Quit
End If
Set objWMIService = GetObject("winmgmts:\.\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * From Win32_Process Where Name = 'outlook.exe'")
If colItems.Count = 0 Then
Set objOutlook = CreateObject("Outlook.Application")
Set objNamespace = objOutlook.GetNamespace("MAPI")
Set objFolder = objNamespace.GetDefaultFolder(olFolderInbox)
objFolder.Display
End If
strFile = WScript.Arguments.Item(0)
Set objOutlook = CreateObject("Outlook.Application")
Set objItem = objOutlook.CreateItem(olMailItem)
objItem.Subject = "Here is a link to a file..."
objItem.HTMLBody = "Link to the file: <A HREF=" & Chr(34) & "file://" & strFile & Chr(34) & ">" & strFile & "</A><BR>Link to the folder: <A HREF=" & Chr(34) & "file://" & strFile & Chr(34) & ">" & strFile & "</A>"
objItem.Display
可能是一个简单的答案,但我一直没弄明白。任何帮助,将不胜感激!
FileSystemObject
对象及其 GetParentFolderName
方法可以提供帮助。请注意,对于使用的任何方法(在下一个脚本中)保持:方法仅适用于提供的路径字符串。它不会尝试解析路径,也不会检查指定路径是否存在。
option explicit
Dim strFile, FSO, oFile
If WScript.Arguments.Count > 0 Then
strFile = WScript.Arguments.Item(0)
Else
strFile = "D:\Remote\bat\COCL\bu bu bu\somefile.ext"
End If
Set FSO = CreateObject("Scripting.FileSystemObject")
Wscript.Echo "FSO 'path' methods" & vbNewLine & "---------------------" _
& vbNewLine & "GetAbsolutePathName: " & FSO.GetAbsolutePathName( strFile) _
& vbNewLine & "GetParentFolderName: " & FSO.GetParentFolderName( strFile) _
& vbNewLine & "GetDriveName: " & FSO.GetDriveName( strFile) _
& vbNewLine & "GetBaseName: " & FSO.GetBaseName( strFile) _
& vbNewLine & "GetExtensionName: " & FSO.GetExtensionName( strFile) _
& vbNewLine & "GetFileName: " & FSO.GetFileName( strFile)
Set FSO = Nothing
Wscript.Quit