【发布时间】:2014-03-09 06:41:25
【问题描述】:
我正在考虑一个简单的脚本或例程来在 Windows 机器上创建桌面链接。有没有办法用 perl 或 cmd 批处理?
如果我愿意
call shortcut.bat C:\putty.exe Putty
一个新的桌面链接出现在桌面上。
【问题讨论】:
-
我认为alex的解决方案更方便..
标签: windows perl batch-file command-line
我正在考虑一个简单的脚本或例程来在 Windows 机器上创建桌面链接。有没有办法用 perl 或 cmd 批处理?
如果我愿意
call shortcut.bat C:\putty.exe Putty
一个新的桌面链接出现在桌面上。
【问题讨论】:
标签: windows perl batch-file command-line
将此保存为快捷方式.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
【讨论】:
@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"
【讨论】: