|
|
将需要建立桌面快捷方式的文件 F 的全路径作为此 bat 文件(或子程序)的第一个参数 %1, 就可在桌面上建立和文件 F 同名的快捷方式, 快捷方式的图标由文件 F 的类型决定, F 是目录也可以, 若 F 是一个包含图标的可执行文件(.exe), 快捷方式将使用 F 包含的第一个图标(索引为 0).
如果要在桌面之外的目录建立快捷方式, 将代码中的 strDesktop 变量设置成相应的目录路径即可, 也可采用参数传递来实现自由应用.- @echo off
- (set att=%~a1)
- echo wscript.echo CreateObject("WScript.Shell").RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\desktop")>t~.vbs
- for /f "delims=" %%a in ('cscript //nologo t~.vbs') do set "mydesk=%%a"
- (set fnLnk=%~n1.lnk)&(set fnFull=%~f1)
- if exist "%mydesk%\%fnLnk%" msg %username% 快捷方式文件 %mydesk%\%fnLnk% 已经存在. 请先删除或重命名此文件再重试.
- (set fnFull=%fnFull:\=\\%)
- (set iconPath=%iconPath:\=\\%)
- (set vbsfn=%HomeDrive%\scuttemp.vbs)
- echo Set WshShell = Wscript.CreateObject("Wscript.Shell")>%vbsfn%
- echo ' 创建一个快捷方式对象,其在桌面上设置相同的名字>>%vbsfn%
- echo strDesktop = WshShell.SpecialFolders("Desktop")>>%vbsfn%
- echo Set oShellLink = WshShell.CreateShortcut(strDesktop ^& "\\%fnLnk%")>>%vbsfn%
- echo ' 设置快捷方式的执行路径>>%vbsfn%
- echo oShellLink.TargetPath = "%fnFull%">>%vbsfn%
- echo oShellLink.WindowStyle = 1 ' 运行方式>>%vbsfn%
- echo oShellLink.Hotkey = "" ' 设置快捷方式的快捷键>>%vbsfn%
- if /i "%att:~0,1%" equ "d" (
- call :setDirIcon
- echo oShellLink.TargetPath = "%SystemRoot%\explorer.exe">>%vbsfn%
- echo oShellLink.Arguments = "%fnFull:\\=\%">>%vbsfn%
- )
- echo oShellLink.Description = "%~f1" ' 设置快捷方式的描述>>%vbsfn%
- if /i "%att:~0,1%" neq "d" echo oShellLink.WorkingDirectory = "%~dp1" ' 起始位置>>%vbsfn%
- echo oShellLink.Save>>%vbsfn%
- cscript //nologo %vbsfn%
- exit /b
- :setDirIcon
- echo oShellLink.IconLocation = "%SystemRoot%\system32\SHELL32.dll, 3" ' 设置文件夹快捷方式的图标路径>>%vbsfn%
- exit /b
复制代码
[ 本帖最后由 neorobin 于 2009-12-8 05:11 编辑 ] |
|