Board logo

标题: 请问将一个程序的快捷方式发送到桌面如何写批处理? [打印本页]

作者: cnds     时间: 2008-12-4 10:08    标题: 请问将一个程序的快捷方式发送到桌面如何写批处理?

求大虾帮忙写一个批处理,要求首次进入系统时,删除C:\Documents and Settings\Administrator\桌面\腾讯QQ,然后将:D:\Backup\QQ\QQ.exe的快捷方式发送到桌面上,之后将快捷方式修改成“腾讯QQ”,最后是删除批处理本身。
        删除批处理文件本身,用del %0可以做到,但是 del C:\Documents and Settings\Administrator\桌面\腾讯QQ不行,用系统变量也不行,郁闷了。另外将D:\Backup\QQ\QQ.exe的快捷方式发送到桌面,这个就更难了。希望大侠不吝赐教。

[ Last edited by cnds on 2008-12-4 at 10:13 ]
作者: HAT     时间: 2008-12-4 11:19
你准备用盗号软件替换QQ么?
作者: cnds     时间: 2008-12-4 11:31
不是啊。我封装了个系统,QQ用的是YLMF修改过的,但是系统安装完毕之后,用那个快捷方式打开的QQ,一动就死住,没法用。但是用腾讯的QQ.exe发送的快捷方式就没有问题。所以我想做个批处理,加入到GHO中。
作者: lianjiang2004     时间: 2008-12-4 12:04
下面是我以前用过的。可参考
作用:用shortcut.exe把指定目录(d:\ggho)下的gghost.exe在桌面上创建一个“GGhost一键恢复”的快捷键。工作目录为指定的目录。

set ggpath0=d:\ggho
%ggpath0%\tools\shortcut.exe /f:"%userprofile%"\桌面\GGhost一键恢复.lnk  /a:c /w:%ggpath0%\ /t:%ggpath0%\gghost.exe >nul
作者: cnds     时间: 2008-12-4 14:20
我写了2个批处理a和b,b放到启动里,a放在%windir%里,启动b之后,会去执行a,但是执行完a之后,程序就结束了,按照设计,执行完a之后,应该再跳回到到b,执行剩余的语句。但是,我不知道怎么弄连接回到b,“C:\Documents and Settings\Administrator\「开始」菜单\程序\启动”的系统变量不会搞。达人指点。
a:

Sub bat
echo off & cls
echo create_shortcut
start wscript -e:vbs "%~f0"
Exit Sub
End Sub


Set WshShell = WScript.CreateObject("WScript.Shell")
strDesktop = WshShell.SpecialFolders("Desktop")
set oShellLink = WshShell.CreateShortcut(strDesktop & "\QQ.lnk")
oShellLink.TargetPath = "D:\backup\QQ.exe"
oShellLink.WindowStyle = 3
oShellLink.Hotkey = ""
oShellLink.IconLocation = "D:\backup\QQ.exe, 0"
oShellLink.Description = "快捷方式"
oShellLink.WorkingDirectory = "D:\backup\QQ.exe"
oShellLink.Save

b:

call %windir%\a.bat
del C:\Docume~1\Administrator\桌面\腾讯QQ.lnk  
ren C:\Docume~1\Administrator\桌面\qq.lnk 腾讯QQ.lnk
del %windir%\a.bat
del %0

a.bat用于把d:\backup\qq\qq.exe的快捷方式发送桌面,这个功能已经实现。我试图在a.bat中,加入call C:\Docume~1\Administrator\「开始」菜单\程序\启动\b.bat,用于实现执行完a.bat后,跳回到b.bat,但是提示缺少语句。大侠帮忙。

[ Last edited by cnds on 2008-12-4 at 14:23 ]
作者: cnds     时间: 2008-12-4 17:53
用这个批处理就可以了:
code:
Sub bat
echo off & cls
echo create_shortcut
start wscript -e:vbs "%~f0"
Exit Sub
End Sub

Set WshShell = WScript.CreateObject("WScript.Shell")
strDesktop = WshShell.SpecialFolders("Desktop")
set oShellLink = WshShell.CreateShortcut(strDesktop & "\腾讯QQ.lnk")
oShellLink.TargetPath = "D:\backup\QQ.exe"
oShellLink.WindowStyle = 3
oShellLink.Hotkey = ""
oShellLink.IconLocation = "D:\backup\QQ.exe, 0"
oShellLink.Description = "快捷方式"
oShellLink.WorkingDirectory = "D:\backup\QQ.exe"
oShellLink.Save

功能是实现了,但是不知道怎么样删除自身,高手请指教。

[ Last edited by cnds on 2008-12-4 at 17:55 ]
作者: HAT     时间: 2008-12-4 17:57    标题: Re 6楼

在b里面删a不行么?
作者: cnds     时间: 2008-12-4 20:39
不可以。运行b.bat之后,执行call %windir%\a.bat,但是执行完a.bat后,程序回不到b.bat来了。
作者: wuxj     时间: 2008-12-4 21:34
我认为你事先做好快捷方式复制过去会是最简单的方法。
作者: cnds     时间: 2008-12-4 21:38
建立快捷方式是问题的根源。只要实现这点,其他相对好解决。