使用批处理文件创建桌面快捷方式(复杂)

时间:2019-11-12 16:33:58

标签: batch-file vbscript

我仅限于使用.bat文件来实现此功能。

我希望能够创建一个桌面快捷方式(带有我自己的图标)来运行MS Access数据库,但是我希望Windows任务栏中显示“我的图标”,而不是默认的MS Access图标。

要实现此目的,快捷方式的目标必须为以下目标:

"C:\Program Files (x86)\Microsoft Office\Office15\MSACCESS.EXE" "C:\Users\lmffwp\Downloads\MyDatabase.accdb"

我需要.bat文件才能将此行写入快捷方式的“目标”。

我疯狂地搜寻Google,但是找不到解决此问题的方法。 这不起作用:

echo oLink.TargetPath = "C:\Program Files (x86)\Microsoft Office\Office15\MSACCESS.EXE" "%USERPROFILE%\Downloads\MyDatabase.accdb" >> %SCRIPT%

这是我的代码:

set SCRIPT="%TEMP%\LinkMaker-%RANDOM%-%RANDOM%.vbs"
echo Set oWS = WScript.CreateObject("WScript.Shell") >> %SCRIPT%
echo sLinkFile = "%PUBLIC%\Desktop\MyDatabase.lnk" >> %SCRIPT%
echo Set oLink = oWS.CreateShortcut(sLinkFile) >> %SCRIPT%
echo oLink.TargetPath = "C:\Program Files (x86)\Microsoft Office\Office15\MSACCESS.EXE" "%USERPROFILE%\Downloads\MyDatabase.accdb" >> %SCRIPT%
echo oLink.IconLocation = "J:\Everyone\Operator Assistant\Images\MyDatabaseLOGO.ico" >> %SCRIPT%
echo oLink.WorkingDirectory = "%USERPROFILE%\Downloads\"
echo oLink.Save >> %SCRIPT%
cscript /nologo %SCRIPT%
del %SCRIPT%

必须有一种方法可以将用引号引起来的以下两行添加到快捷方式的目标中:

echo oLink.TargetPath = "C:\Program Files (x86)\Microsoft Office\Office15\MSACCESS.EXE" "%USERPROFILE%\Downloads\MyDatabase.accdb" >> %SCRIPT%

我相信这是我实际问题的细分。

侧面说明: 如果我手动更改快捷方式的目标行,则快捷方式可以完美工作。我需要.bat文件来为我执行此操作,因为它是每个人用来将数据库前端安装到其本地PC的安装文件。

2 个答案:

答案 0 :(得分:0)

我想做的是向您的TargetPath添加参数。如我在“自删除以来”注释中所述,如果没有自变量,脚本将不会为您提供任务栏中MyDatabase.accdb的图标,只会为您正在运行的程序MSAccess.exe提供图标。

这是您对代码的修改,以供进一步阅读:

@Set "SCRIPT=%TEMP%\LinkMaker-%RANDOM%-%RANDOM%.vbs"
@(  echo Set oWS = WScript.CreateObject("WScript.Shell"^)
    echo sLinkFile = "%PUBLIC%\Desktop\MyDatabase.lnk"
    echo Set oLink = oWS.CreateShortcut(sLinkFile^)
    echo oLink.TargetPath = "C:\Program Files (x86^)\Microsoft Office\Office15\MSACCESS.EXE"
    echo oLink.Arguments = """%USERPROFILE%\Downloads\MyDatabase.accdb"""
    echo oLink.IconLocation = "J:\Everyone\Operator Assistant\Images\MyDatabaseLOGO.ico"
    echo oLink.WorkingDirectory = "%USERPROFILE%\Downloads"
    echo oLink.Save
)>"%SCRIPT%"
@"%__AppDir__%cscript.exe" //NoLogo "%SCRIPT%"
@Del "%SCRIPT%"

旁注:您似乎错过了将>> %SCRIPT%附加到版本中的工作目录行中的情况。

答案 1 :(得分:0)

COMPO ....感谢您的所有帮助。虽然您没有得到最终的答案,但您无济于事。

这是绝对有效的代码!!!!

@echo off

@Set "SCRIPT=%TEMP%\LinkMaker-%RANDOM%-%RANDOM%.vbs"
@(  echo Set oWS = WScript.CreateObject("WScript.Shell"^)
    echo sLinkFile = "%PUBLIC%\Desktop\MyDatabase.lnk"
    echo Set oLink = oWS.CreateShortcut(sLinkFile^)
    echo oLink.TargetPath = "C:\Program Files (x86)\Microsoft Office\Office15\MSACCESS.EXE"
    echo oLink.Arguments = """%USERPROFILE%\Downloads\MyDatabase.accdb"""
    echo oLink.IconLocation = "J:\Everyone\MyDatabase\Images\MyDatabaseLOGO.ico"
    echo oLink.WorkingDirectory = "%USERPROFILE%\Downloads"
    echo oLink.Save
)>"%SCRIPT%"
@"%__AppDir__%cscript.exe" //NoLogo "%SCRIPT%"
@Del "%SCRIPT%"

请注意,oLink.Argument行的每一侧都有3个引号。这样就可以解决问题,并可以使.bat文件顺利运行,不仅可以创建桌面快捷方式,还可以在Windows任务栏(屏幕底部)上为数据库使用我的“自定义图标”。

再次……非常感谢 COMPO !感谢您帮我挂在这里!