Comment créer un raccourci à partir de CMD ?
Comment créer un fichier de raccourci (.lnk
) vers un autre fichier ou un exécutable, en utilisant des utilitaires en ligne de commande ?
Comment créer un fichier de raccourci (.lnk
) vers un autre fichier ou un exécutable, en utilisant des utilitaires en ligne de commande ?
Ce site contient des informations très utiles : http://ss64.com/nt/shortcut.html
Il semble qu'il y ait un shortcut.exe
dans un kit de ressources que je n'ai pas.
Comme beaucoup d'autres sites le mentionnent, il n'y a pas de moyen intégré de le faire à partir d'un fichier batch. Mais vous pouvez le faire à partir d'un script VB :
Les sections optionnelles dans le VBscript ci-dessous sont commentées :
Set oWS = WScript.CreateObject("WScript.Shell") sLinkFile = "C:\MyShortcut.LNK" Set oLink = oWS.CreateShortcut(sLinkFile) oLink.TargetPath = "C:\Program Files\MyApp\MyProgram.EXE" ' oLink.Arguments = "" ' oLink.Description = "MyProgram" ' oLink.HotKey = "ALT+CTRL+F" ' oLink.IconLocation = "C:\Program Files\MyApp\MyProgram.EXE, 2" ' oLink.WindowStyle = "1" ' oLink.WorkingDirectory = "C:\Program Files\MyApp" oLink.Save
Donc, si vous devez vraiment le faire, alors vous pouvez faire en sorte que votre fichier batch écrive le script VB sur le disque, l'invoque et le supprime à nouveau. Par exemple, comme suit :
@echo off
echo Set oWS = WScript.CreateObject("WScript.Shell") > CreateShortcut.vbs
echo sLinkFile = "%HOMEDRIVE%%HOMEPATH%\Desktop\Hello.lnk" >> CreateShortcut.vbs
echo Set oLink = oWS.CreateShortcut(sLinkFile) >> CreateShortcut.vbs
echo oLink.TargetPath = "C:\Windows\notepad.exe" >> CreateShortcut.vbs
echo oLink.Save >> CreateShortcut.vbs
cscript CreateShortcut.vbs
del CreateShortcut.vbs
L'exécution du script ci-dessus entraîne un nouveau raccourci sur mon bureau :
Voici un extrait plus complet d'un contributeur anonyme (mis à jour avec une correction mineure) :
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
SET LinkName=Hello
SET Esc_LinkDest=%%HOMEDRIVE%%%%HOMEPATH%%\Desktop\!LinkName!.lnk
SET Esc_LinkTarget=%%SYSTEMROOT%%\notepad.exe
SET cSctVBS=CreateShortcut.vbs
SET LOG=".\%~N0_runtime.log"
((
echo Set oWS = WScript.CreateObject^("WScript.Shell"^)
echo sLinkFile = oWS.ExpandEnvironmentStrings^("!Esc_LinkDest!"^)
echo Set oLink = oWS.CreateShortcut^(sLinkFile^)
echo oLink.TargetPath = oWS.ExpandEnvironmentStrings^("!Esc_LinkTarget!"^)
echo oLink.Save
)1>!cSctVBS!
cscript //nologo .\!cSctVBS!
DEL !cSctVBS! /f /q
)1>>!LOG! 2>>&1
Voici une solution similaire utilisant powershell (je sais, vous pouvez probablement réécrire tout votre fichier batch en PS, mais si vous voulez juste le récupérer Done™…)
set TARGET='D:\Temp'
set SHORTCUT='C:\Temp\test.lnk'
set PWS=powershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile
%PWS% -Command "$ws = New-Object -ComObject WScript.Shell; $s = $ws.CreateShortcut(%SHORTCUT%); $S.TargetPath = %TARGET%; $S.Save()"
Vous devrez peut-être spécifier explicitement le chemin d'accès à PS dans votre fichier, mais cela devrait fonctionner. Il y a quelques attributs supplémentaires que vous pouvez aussi utiliser pour cet objet :
Name MemberType Definition
---- ---------- ----------
Load Method void Load (string)
Save Method void Save ()
Arguments Property string Arguments () {get} {set}
Description Property string Description () {get} {set}
FullName Property string FullName () {get}
Hotkey Property string Hotkey () {get} {set}
IconLocation Property string IconLocation () {get} {set}
RelativePath Property string RelativePath () {set}
TargetPath Property string TargetPath () {get} {set}
WindowStyle Property int WindowStyle () {get} {set}
WorkingDirectory Property string WorkingDirectory () {get} {set}
Outre shortcut.exe, vous pouvez également utiliser la version en ligne de commande de NirCmd pour créer un raccourci http://nircmd.nirsoft.net/shortcut.html
Que diriez-vous d'utiliser la commande mklink ? C:\Windows\System32>mklink Crée un lien symbolique.
MKLINK [[/D] | [/H] | [/J]] Lien Target
/D Creates a directory symbolic link. Default is a file
symbolic link.
/H Creates a hard link instead of a symbolic link.
/J Creates a Directory Junction.
Link specifies the new symbolic link name.
Target specifies the path (relative or absolute) that the new link
refers to.
Après toutes les discussions que nous avons eues ici, voici la solution que je propose : le téléchargement : http://optimumx.com/download/Shortcut.zip extrayez-le sur votre bureau (par exemple). Maintenant, supposons que vous vouliez créer un raccourci pour un fichier appelé scrum.pdf (également sur le bureau) :
1. ouvrez CMD et allez dans le dossier du bureau
2. exécutez : Shortcut.exe /f:"%USERPROFILE%\Desktop\sc.lnk" /a:c /t:%USERPROFILE%\Desktop\scrum.pdf
il créera un raccourci appelé sc.lnk sur votre bureau qui pointera vers le fichier original (scrum.pdf)
Je sais que ce sujet est ancien, mais je voulais proposer la solution simple qui me convenait.
J'ai d'abord copié le fichier .ico sur mon lecteur C :. J'ai ensuite créé le raccourci sur mon bureau et j'ai placé l'icône du fichier ico sur mon lecteur C :. J'ai ensuite copié le fichier .ico et le raccourci sur un partage réseau auquel mes utilisateurs ont accès. Une fois sur place, j'ai écrit le fichier batch suivant pour copier les fichiers ico et .url sur le bureau Windows 7 de l'utilisateur. Cela crée le raccourci sur le bureau de tous les utilisateurs et conserve le fichier d'icône que j'ai défini lors de la création du raccourci. J'espère que cela aidera quelqu'un.
@echo off
Copy "\sharename\folder\icon.ico" "C:\"
pause
copy "\sharename\folder\shortcut.url" "C:\Users\All Users\Desktop"
pause
Ce programme gratuit a nécessité une fonctionnalité http://www.nirsoft.net/utils/nircmd2.html : (échantillon de ladite page web)"Create a shortcut to Windows calculator under Start Menu->Programs->Calculators nircmd.exe shortcut "f:\winnt\system32\calc.exe" "~$folder.programs$\Calculators" "Windows Calculator"
Mon propre échantillon à essayer : raccourci nircmd.exe “c:\windows\system32\calc.exe” “~$folder.desktop$” “Windows Calculator”