无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 5610|回复: 21
打印 上一主题 下一主题

用pecmd实现发送到--桌面快捷方式

[复制链接]
跳转到指定楼层
1#
发表于 2010-2-26 14:28:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
思路是用批处理调用pecmd来实现,把批处理放到“SendTo”目录里。批处理内容:

PECMD LINK %Desktop%\xxxx,%1

现在的问题是创建出来的快捷方式都是用xxxx来命名的。

怎么判断文件名,用判断出来的文件名来命名快捷方式的文件名,对批处理不太懂。请大家指点一下。
2#
发表于 2010-2-26 14:31:22 | 只看该作者
这个很简单

%~n1 就是文件名
回复

使用道具 举报

3#
 楼主| 发表于 2010-2-26 14:51:01 | 只看该作者
[这个很简单<br />
<br />
%~n1 就是文件名 [/quote]<br />



感谢你的帮助。

谢谢
回复

使用道具 举报

4#
发表于 2010-2-26 15:30:49 | 只看该作者
这个方式最大的缺陷就是屏幕会闪一下,因为要弹出一个cmd窗口,然后瞬间关闭

还有就是发送到 显示的不是 “桌面快捷方式” 而是 “桌面快捷方式.CMD” 或者.bat

如果隐藏后缀名,则别的地方也不显示后缀名

不知道你解决了这2个问题没?
回复

使用道具 举报

5#
 楼主| 发表于 2010-2-26 15:53:54 | 只看该作者
屏幕会闪这个好像无法解决,除了以前好像见过一个代替cmd的小程序可以隐藏运行。


第二个好解决,把这个批处理放到system32目录,在pecmd.in加

FILE %SendTo%\桌面快捷方式,%SystemRoot%\SYSTEM32\快捷方式.bat,,SHELL32.DLL,34

就可以了,这样图标还是桌面快捷方式的图标,扩展名也不会在右键菜单中显示。比用那个dll文件要小。


.

[ 本帖最后由 yinyuan 于 2010-2-26 16:27 编辑 ]
回复

使用道具 举报

6#
发表于 2010-2-26 18:47:58 | 只看该作者
原帖由 yinyuan 于 2010-2-26 15:53 发表
屏幕会闪这个好像无法解决,除了以前好像见过一个代替cmd的小程序可以隐藏运行。


第二个好解决,把这个批处理放到system32目录,在pecmd.in加

FILE %SendTo%\桌面快捷方式,%SystemRoot%\SYSTEM32\快捷方 ...



应该是 LINK 吧

闪一下还是不太爽,不过我也不想加那个没什么用的sendmail.dll
回复

使用道具 举报

7#
发表于 2010-2-26 18:50:22 | 只看该作者
给你个小的用下.

SEND.rar (13.68 KB, 下载次数: 293)
回复

使用道具 举报

8#
发表于 2010-2-26 19:02:38 | 只看该作者
原帖由 NicTense 于 2010-2-26 14:31 发表
这个很简单

%~n1 就是文件名


  pecmd 里面 现在 不是有了,  name 参数了吗?


    可以不调用DOS  直载用pecmd 呀
回复

使用道具 举报

9#
 楼主| 发表于 2010-2-26 19:36:21 | 只看该作者
到家实机试验成功。xcmd.ini 添加
LINK %SendTo%\桌面快捷方式,%SystemRoot%\SYSTEM32\快捷方式.bat,,SHELL32.DLL,34

快捷方式.bat批处理内容:放在system32下
XCMD LINK %Desktop%\%~n1,%1

创建快捷方式时cmd窗口一闪而过,感觉还行。在此多谢 NicTense 朋友的指点。
回复

使用道具 举报

10#
发表于 2010-2-26 21:14:44 | 只看该作者
原帖由 x9tian 于 2010-2-26 19:02 发表


  pecmd 里面 现在 不是有了,  name 参数了吗?


    可以不调用DOS  直载用pecmd 呀


反正都只能通过批处理调用pecmd(或者xcmd)的话,用%~n1更直接

如果是写进注册表的话,%~n1无效,这时用name就比较合适了

不过我还没研究过是否能通过修改注册表来完成这个功能


@yinyuan
不客气,举手之劳,讨论讨论而已,你不也帮我解决了一个问题吗
回复

使用道具 举报

11#
发表于 2010-2-26 21:37:25 | 只看该作者
围观楼上高手....
回复

使用道具 举报

12#
发表于 2010-2-26 22:51:03 | 只看该作者
用vbs脚本来隐藏启动批处理
回复

使用道具 举报

13#
发表于 2010-2-26 22:56:35 | 只看该作者
看的不是太明白
是在右键添加一个发送快捷方式到桌面的选项吗?
如果是的话,PECMD+注册表可以实现。

PECMD.EXE TEAM NAME FileName=%1|LINK !%%Desktop%%\\%%FileName%%,%1

  1. Windows Registry Editor Version 5.00

  2. [HKEY_CLASSES_ROOT\*\shell\DesktopLnk]
  3. @="发送到 - 桌面快捷方式"
  4. [HKEY_CLASSES_ROOT\*\shell\DesktopLnk\command]
  5. @="PECMD.EXE TEAM NAME FileName=%1|LINK !%%Desktop%%\\%%FileName%%,%1"
  6. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\发送到 - 桌面快捷方式]
  7. @="发送到 - 桌面快捷方式"
  8. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\发送到 - 桌面快捷方式\command]
  9. @=hex(2):50,00,45,00,43,00,4d,00,44,00,2e,00,45,00,58,00,45,00,20,00,54,00,45,\
  10.   00,41,00,4d,00,20,00,4e,00,41,00,4d,00,45,00,20,00,46,00,69,00,6c,00,65,00,\
  11.   4e,00,61,00,6d,00,65,00,3d,00,25,00,31,00,7c,00,4c,00,49,00,4e,00,4b,00,20,\
  12.   00,21,00,25,00,25,00,44,00,65,00,73,00,6b,00,74,00,6f,00,70,00,25,00,25,00,\
  13.   5c,00,5c,00,25,00,25,00,46,00,69,00,6c,00,65,00,4e,00,61,00,6d,00,65,00,25,\
  14.   00,25,00,2c,00,25,00,31,00,00,00
复制代码

[ 本帖最后由 landays 于 2010-2-26 23:07 编辑 ]
回复

使用道具 举报

14#
 楼主| 发表于 2010-2-26 23:08:48 | 只看该作者
原帖由 ones 于 2010-2-26 22:51 发表
用vbs脚本来隐藏启动批处理



vbs本身就可隐藏实现和创建桌面快捷方式,但pe一般都不支持vbs脚本。

Set unNamedArguments = WScript.Arguments.UnNamed
set WshShell = WScript.CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
strFolder = "C:\Documents and Settings\Administrator\桌面"
for count = 0 to wscript.arguments.count-1 Step 1
filename = unNamedArguments.Item(count)
Set objFile = objFSO.GetFile(filename)
set oShellLink = WshShell.CreateShortcut(strFolder & objFSO.GetBaseName(filename) & ".lnk")
oShellLink.TargetPath = filename
oShellLink.WindowStyle = 1
oShellLink.WorkingDirectory = objFSO.GetParentFolderName(filename)
oShellLink.Save
NEXT

以上脚本保存为xxx.vbs保存到SendTo目录,就可实现桌面快捷方式功能,可惜pe下无法运行。添加组件有违背了做小的初衷。
回复

使用道具 举报

15#
发表于 2010-2-26 23:14:12 | 只看该作者
原帖由 landays 于 2010-2-26 22:56 发表
看的不是太明白
是在右键添加一个发送快捷方式到桌面的选项吗?
如果是的话,PECMD+注册表可以实现。

PECMD.EXE TEAM NAME FileName=%1|LINK !%%Desktop%%\\%%FileName%%,%1

Windows Registry Editor V ...



不是,这个容易实现
但是如果这样,这个就不是出现在 发送到 的子菜单里了

不过如果没法解决闪一下的问题
像这样直接创建一个右键菜单项也是一个可以考虑的方案
名字改成 “创建桌面快捷方式”可能更好一些

但是这个要创建几个项,*的,目录的。。。

[ 本帖最后由 NicTense 于 2010-2-26 23:15 编辑 ]
回复

使用道具 举报

16#
 楼主| 发表于 2010-2-26 23:18:17 | 只看该作者
原帖由 landays 于 2010-2-26 22:56 发表
看的不是太明白
是在右键添加一个发送快捷方式到桌面的选项吗?
如果是的话,PECMD+注册表可以实现。

PECMD.EXE TEAM NAME FileName=%1|LINK !%%Desktop%%\\%%FileName%%,%1

Windows Registry Editor V ...



这样不是右键又多出一个“发送到 - 桌面快捷方式”的菜单,右键本身有一个“发送到”的菜单,主要是想把pe本身的菜单利用起来。呵呵
回复

使用道具 举报

17#
发表于 2010-2-27 10:47:35 | 只看该作者
哈哈,问题解决了

LINK %SendTo%\桌面快捷方式,%WS%\PECMD.EXE,EXEC !%WS%\desklink.cmd,explorer.exe#3

这样就不会闪出cmd框了,楼主看到试一下,这个方法比sendmail好,节省空间也不用注册dll

如果 %WS%没有定义的话,需要改成 %WinDir%\system32


(呆会说不定又有个人跑出来说一句,才知道啊,哈,每次解决问题那个人就会出来说这句。。。)

[ 本帖最后由 NicTense 于 2010-2-27 11:53 编辑 ]
回复

使用道具 举报

18#
 楼主| 发表于 2010-2-27 11:44:06 | 只看该作者
昨天睡觉时我还在想能不能用xcmd的隐藏运行程序的方法来吧那个cmd的黑框给去掉,没想到你已经弄好了,刚才虚拟机里试了,完全没问题。

LINK %SendTo%\桌面快捷方式,%SystemRoot%\XCMD.EXE,EXEC !%SystemRoot%\桌面快捷方式.bat,SHELL32.DLL,34

你解决大问题了!
回复

使用道具 举报

19#
发表于 2010-2-27 11:46:35 | 只看该作者

回复 #18 yinyuan 的帖子

昨天太累了,脑袋有点迟钝
今天一睡醒,就突然觉得好像这个根本就不是问题,测试了一下,果然没问题

不过貌似快捷方式不支持 %1 之类的参数,要不就可以连cmd文件都不要了
回复

使用道具 举报

20#
 楼主| 发表于 2010-2-27 11:56:42 | 只看该作者
已经不错了,去掉了那个dll文件,有免去了注册,呵呵
回复

使用道具 举报

21#
发表于 2010-2-27 12:01:48 | 只看该作者
对了,关于%1的附加参数,像%~n1之类的
你可以在cmd下 输入 for /?
最后部分有详细列表的
还有set /?
有关于 %a:.=_ %  %a:~10% 之类的详细说明,有空可以看看,几分钟就明白了

不过这些参数只能在批处理用

像注册表只能用原始的  %1 或者 %L
回复

使用道具 举报

22#
 楼主| 发表于 2010-2-27 13:05:33 | 只看该作者
好的,近段抓紧时间学习一下批处理。不懂的地方还的请你指教。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-6-7 02:51

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表