首页 > 解决方案 > 批处理:当快捷方式不存在时如何创建快捷方式

问题描述

嗨,我是批处理/命令行的新成员。

仅当快捷方式/文件尚不存在时,我才想创建应用程序的快捷方式。我编写了创建短路的部分,如果它不在条件 IF 中,那么它可以工作,但是当它在内部时,什么也没有发生。

这是代码:

@echo off
if exist "C:\Users\%USERNAME%\Desktop\Tks.lnk" (
    echo file
)   else (
    echo not file
    
    set SCRIPT="%TEMP%\%RANDOM%-%RANDOM%-%RANDOM%-%RANDOM%.vbs"

    echo Set oWS = WScript.CreateObject("WScript.Shell") >> %SCRIPT%
    echo sLinkFile = "%USERPROFILE%\Desktop\Tks.lnk" >> %SCRIPT%
    echo Set oLink = oWS.CreateShortcut(sLinkFile) >> %SCRIPT%
    echo oLink.TargetPath = "C:\Users\%USERNAME%\Documents\000_DF_P\SF - Tks.accdb" >> %SCRIPT%
    echo oLink.IconLocation = "destination_icon"  >> %SCRIPT%
    echo oLink.Save >> %SCRIPT%

    cscript /nologo %SCRIPT%
    del %SCRIPT%
)
pause

谢谢

标签: windowsbatch-filecmd

解决方案


有一些问题需要避免和其他方法可以做到这一点,但只是为了纠正你的尝试。

将定义移到开头并转义内部 else )使用^)

@echo off

set "SCRIPT=%TEMP%\%RANDOM%-%RANDOM%-%RANDOM%-%RANDOM%.vbs"

if exist "C:\Users\%USERNAME%\Desktop\Tks.lnk" (
    echo file
)   else (
    echo not file
    
    echo Dim oWS >> %SCRIPT%
    echo Set oWS = WScript.CreateObject("WScript.Shell"^) >> %SCRIPT%
    echo sLinkFile = "%USERPROFILE%\Desktop\Tks.lnk" >> %SCRIPT%
    echo Set oLink = oWS.CreateShortcut(sLinkFile^) >> %SCRIPT%
    echo oLink.TargetPath = "C:\Users\%USERNAME%\Documents\000_DF_P\SF - Tks.accdb" >> %SCRIPT%
    echo oLink.IconLocation = "destination_icon"  >> %SCRIPT%
    echo oLink.Save >> %SCRIPT%

    cscript /nologo %SCRIPT%
    del %SCRIPT%
)
pause

推荐阅读