【问题标题】:Script that create Desktop Links on Windows? [duplicate]在 Windows 上创建桌面链接的脚本? [复制]
【发布时间】:2014-03-09 06:41:25
【问题描述】:

我正在考虑一个简单的脚本或例程来在 Windows 机器上创建桌面链接。有没有办法用 perl 或 cmd 批处理?

如果我愿意

call shortcut.bat C:\putty.exe Putty

一个新的桌面链接出现在桌面上。

【问题讨论】:

  • 我认为alex的解决方案更方便..

标签: windows perl batch-file command-line


【解决方案1】:

将此保存为快捷方式.bat

@echo off

:: creates a temporary vbs script that drops a shortcut to the desktop
:: replace %1 with the path to your *.exe that you wish to shortcut
:: replace %userprofile%\Desktop\%2.lnk with the path and name of your shortcut
ECHO %userprofile%\Desktop\%2.lnk

:: CHECK FOR EXISTING myshortcut.vbs SCRIPT AND DELETE
cd %userprofile%\Desktop
    if exist %userprofile%\Desktop\myshortcut.vbs del %userprofile%\Desktop\myshortcut.vbs

:: CREATE myshortcut.vbs FILE CONTAINING ALL COMMANDS for the vb script to create a shortcut of your file

FOR /F "tokens=1* delims=;" %%B IN ("Set oWS = WScript.CreateObject("WScript.Shell")") do echo %%B>>%userprofile%\Desktop\myshortcut.vbs   
FOR /F "tokens=1* delims=;" %%B IN ("sLinkFile = "%userprofile%\Desktop\%2.lnk"") do echo %%B>>%userprofile%\Desktop\myshortcut.vbs

FOR /F "tokens=1* delims=;" %%B IN ("Set oLink = oWS.Createshortcut(sLinkFile)") do echo %%B>>%userprofile%\Desktop\myshortcut.vbs
FOR /F "tokens=1* delims=;" %%B IN ("   oLink.TargetPath = "%1"") do echo %%B>>%userprofile%\Desktop\myshortcut.vbs
FOR /F "tokens=1* delims=;" %%B IN ("   '   oLink.Arguments = """) do echo %%B>>%userprofile%\Desktop\myshortcut.vbs
FOR /F "tokens=1* delims=;" %%B IN ("   '   oLink.Description = """) do echo %%B>>%userprofile%\Desktop\myshortcut.vbs
FOR /F "tokens=1* delims=;" %%B IN ("   '   oLink.HotKey = "ALT+CTRL+F"") do echo %%B>>%userprofile%\Desktop\myshortcut.vbs
FOR /F "tokens=1* delims=;" %%B IN ("   '   oLink.IconLocation = "%1,2"") do echo %%B>>%userprofile%\Desktop\myshortcut.vbs
FOR /F "tokens=1* delims=;" %%B IN ("   '   oLink.WindowStyle = "1"") do echo %%B>>%userprofile%\Desktop\myshortcut.vbs
FOR /F "tokens=1* delims=;" %%B IN ("   '   oLink.WorkingDirectory = "%1"") do echo %%B>>%userprofile%\Desktop\myshortcut.vbs
FOR /F "tokens=1* delims=;" %%B IN ("   oLink.Save") do echo %%B>>%userprofile%\Desktop\myshortcut.vbs

:: EXECUTE myshortcut.vbs
CSCRIPT %userprofile%\Desktop\myshortcut.vbs

:: Delete vbs script
del %userprofile%\Desktop\myshortcut.vbs

exit

像这样使用它

call shortcut.bat C:\PROGRA~2\TeraTerm\ttermpro.exe TeraTerm >nul

【讨论】:

    【解决方案2】:

    @AlexTape 的回答是完全正确的。 这是相同的答案,没有什么可补充的,只是为了简化它

    @echo off
        call :createDesktopShortcut "%~1" "%~2"
        exit /b
    
    :createDesktopShortcut pathToExeFile nameOfShortcut
        if not exist "%~f1" goto :eof
        setlocal & set "tempFile=%temp%\%~nx0.vbs.tmp" & set "name=%~2" & if not defined name set "name=%~n1"
        echo(With WScript.CreateObject("WScript.Shell").Createshortcut("%userprofile%\desktop\%~2.lnk"):.TargetPath="%~f1":.Save:End With>"%tempFile%"
        cscript //nologo //e:vbscript "%tempFile%">nul & del /f /q "%tempFile%" >nul 2>nul
        endlocal & goto :eof
    

    同样的用法。

    call desktopShortcut.cmd "c:\windows\system32\calc.exe" "my calculator"
    

    【讨论】:

    • +1 因为做同样的事情,更短!
    猜你喜欢
    • 2020-08-12
    • 2011-01-03
    • 1970-01-01
    • 2011-06-07
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    相关资源
    最近更新 更多