中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-08 04:37
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何添加个“发送到桌面快捷方式”的右键 查看 3,871 回复 6
楼 主 如何添加个“发送到桌面快捷方式”的右键 发表于 2008-04-14 21:23 ·  中国 江西 赣州 安远县 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
18年会员
UID 96653
性别 男
状态 离线
系统里的“发送到”实在让人受不了,要几秒才显示出发送到菜单

想在右键加个菜单---发送到桌面快捷方式
· 如果是文件,创建的快捷方式最好不带扩展名
· 能针对多个文件
· 最好不要闪cmd窗口
· 利用其他工具也行,如shortcut、nircmd
2 DesktopLink.vbs---By Slore 发表于 2008-04-15 03:07 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
引用的就不算我说话了~郁闷~~~打空格也不行。。。


'-----------------DesktopLink.vbs---By Slore At 2008-04-15------------------
'
'脚本说明:
'放到任意目录,双击即可安装/卸载。
'欢迎您的测试以及给我提供宝贵意见。
'如果你喜欢,请随意转载,但请勿随意修改。
' http://bbs.cn-dos.net
'
'意见反馈:1.论坛消息
' 2.email:slorelee@yahoo.com.cn
'---------------------------------------------------------转载请保留我:)----
Dim strArg,strDesktop,strBsname
Set objShell = WScript.CreateObject("WScript.Shell")
ArgCount = wscript.Arguments.Count
If ArgCount = 0 Then
strArg = "在右键添加一个发送到桌面快捷方式选项:" & vbCrLf
ret = MsgBox( strArg & "是 否 取消",67,"By Slore")
strArg = "HKCR\AllFilesystemObjects\Shell\Slore\"
If ret = 6 Then
strCommand = "Wscript.exe """ & WScript.ScriptFullName & """ ""%1"""
objShell.RegWrite strArg,"桌面快捷方式(&L)"
objShell.RegWrite strArg & "Command\", strCommand
MsgBox "菜单已添加成功!..o(∩_∩)o..",64,"By Slore"
ElseIf ret = 7 Then
objShell.RegDelete strArg & "Command\"
objShell.RegDelete strArg
MsgBox "该菜单已删除!",64,"By Slore"
End If
wscript.Quit
End If

Set
objFSO = CreateObject("Scripting.FileSystemObject")
strDesktop = objShell.SpecialFolders("Desktop")
For i = 0 To ArgCount - 1
strArg = wscript.arguments.item(i)
strBsname = objFSO.GetBaseName(strArg)
strTarget = strDesktop & "\" & strBsname
If Not CST(strTarget,".lnk") Then CST strTarget,".pif"
Next

Function
CST(strPath,strExt)
n = 1:CST = True
on Error Resume Next
Do While
objFSO.FileExists(strPath & strExt)
n = n + 1
strTarget = strDesktop & "\" & strBsname & " (" & n & ")"
Loop
Set
oShellLink = objShell.CreateShortcut(strPath & ".lnk")
oShellLink.TargetPath = strArg
oShellLink.WorkingDirectory = objFSO.GetParentFolderName(strArg)
oShellLink.Save
If Err Then Err.Clear:CST = False
End Function

Set
oShellLink = Nothing
Set
objShell = Nothing
Set
objFSO = Nothing

3 发表于 2008-04-15 08:11 ·  中国 江西 赣州 安远县 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
18年会员
UID 96653
性别 男
状态 离线
谢谢slore,很不错。就是创建多个快捷方式有点慢,能像系统的那样快就好了
4 发表于 2008-04-15 09:48 ·  中国 广西 玉林 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
20年会员
UID 44210
状态 离线
2 楼的可以在选定多个文件后创建多个快捷方式

[ Last edited by zh159 on 2008-4-15 at 09:53 AM ]
5 发表于 2008-04-15 12:48 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
Originally posted by tireless at 2008-4-15 08:11:
谢谢slore,很不错。就是创建多个快捷方式有点慢,能像系统的那样快就好了


已经尽量了。但是知识还是不够。。。
调用系统的那个DESKLINK,但是是 CLSID那种……
这个其实选多个,也没有进循环。。。

是每个文件调用一次DESKLINK.VBS,所以……选的越多越卡,会一下运行n个wscript...


所以如果是多个还是SENDTO下吧

PS:我这里的SENDTO显示很快呀~~~你是不是里面项目太多了?
6 发表于 2008-04-15 20:35 ·  中国 江西 赣州 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
18年会员
UID 96653
性别 男
状态 离线
Originally posted by slore at 2008-4-14 04:48 PM:


PS:我这里的SENDTO显示很快呀~~~你是不是里面项目太多了?


不,即使只留下一个“桌面快捷方式”,那菜单的显示速度也让我很郁闷。。。

用shortcut或nircmd应该比较快,怎么用?
7 发表于 2008-04-15 20:57 ·  中国 台湾 中华电信
初级用户
积分 107
发帖 42
注册 2007-09-03 16:43
18年会员
UID 96475
性别 男
状态 离线
1.bat内容

@echo off
if exist %temp%\1.txt del 1.txt /q >nul 2>nul
for %%a in (%*) do echo shortcut "%%~a" "~$folder.desktop$" "%%~na">>%Temp%\1.txt
nircmd script %temp%\1.txt

加入右键选单的内容

nircmd execmd 1.bat %*

[ Last edited by sylovanas on 2008-4-15 at 09:00 PM ]
论坛跳转: