Question Comment faire un raccourci de CMD?


Comment créer un fichier de raccourci (.lnk) à un autre fichier ou exécutable, en utilisant des utilitaires de ligne de commande?


68
2018-02-20 18:24


origine


Il ne semble pas y avoir de moyen simple de le faire. Certaines personnes ont des outils écrits qui vous permettent de le faire; voici l'un d'entre eux. Une recherche Google pour "Windows créer un raccourci ligne de commande" en fait apparaître d'autres. (Je n'ai pas essayé aucun d'entre eux.) - Keith Thompson
@iglvzx - Je ne suis pas sûr que l’édition que vous avez faite soit correcte. Je ne pense pas que Shantanu ait besoin d'un script batch - cela pourrait être un moyen de créer un fichier * .lnk vers un autre fichier * .exe. - alfasin
@alfasin j'ai ajouté (.ink file), car il y avait une certaine confusion. J'ai révisé la question pour refléter le commentaire de Shantanu. Bien que vous fournissiez un moyen de faire des «raccourcis», cela ne répond pas à cette question spécifique. - iglvzx
Utilisez le suivant: powershell "$ s = (New-Object -COM WScript.Shell) .CreateShortcut ('% userprofile% \ Desktop \ shortcut.lnk'); $ s.TargetPath = 'C: \ Windows \'; $ s .Save () "Évidemment, remplacez"% userprofile% \ Desktop \ shortcut.lnk "et" C: \ Windows \ "avec votre chemin de raccourci et votre chemin cible, respectivement. - cowlinator
@cowlinator Comme saisi, votre suggestion ne fonctionne pas. - Ploni


Réponses:


Il y a des informations très utiles sur ce site: http://ss64.com/nt/shortcut.html

On dirait qu'il y en a shortcut.exe dans un kit de ressources que je n'ai pas.
Comme de nombreux autres sites l’indiquent, il n’existe aucun moyen intégré de le faire à partir d’un fichier de commandes.

Mais vous pouvez le faire à partir d’un script VB:

Les sections facultatives du script VB 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 avez vraiment doit faites-le, alors vous pouvez faire en sorte que votre fichier batch écrive le script VB sur le disque, l'invoque et le retire ensuite. Par exemple, comme ça:

@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 génère un nouveau raccourci sur mon bureau:
Resulting shortcut

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

46
2018-02-20 20:06



En relation: Liens MSDN, Shell - iglvzx
Cela fonctionne très bien pour les raccourcis vers un fichier. Cependant, j'ai un problème étrange en l'utilisant pour un raccourci vers un dossier, lorsque ma variable Esc_LinkTarget contient une variable d'environnement essayant d'obtenir son dossier parent. (Quelque chose comme% CD% \ .. ne fonctionne pas, mais% CD% fonctionne). Le type de cible de raccourci devient un «fichier» au lieu de «dossier» - Edmund
@Edmund Problème intéressant. Je n'ai pas le temps de l'examiner, mais je suppose qu'un slash à la traîne pourrait faire la différence. - Der Hochstapler
Note: si vous utilisez SET Esc_LinkTarget=%0 alors vous devez retirer le " de echo oLink.TargetPath = oWS.ExpandEnvironmentStrings^(!Esc_LinkTarget!^) - Black


Outre shortcut.exe, vous pouvez également utiliser la version de ligne de commande de NirCmd pour créer un raccourci. http://nircmd.nirsoft.net/shortcut.html


16
2017-09-30 23:24



Je recommande presque tout de NirSoft, c'est le jeu d'outils de geek ultime - That Brazilian Guy


Voici une solution similaire à l'aide de Powershell (je sais, vous pouvez probablement réécrire l'intégralité de votre fichier de commandes dans PS, mais si vous voulez juste que ça marche ...)

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 préciser le chemin d'accès à PS dans votre fichier, mais cela devrait fonctionner. Vous pouvez également modifier certains attributs à travers 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} 

16
2017-11-06 18:05



Trix: Si vous croyez que vous avez une meilleure façon de le faire, postez-le simplement comme une nouvelle réponse (en établissant un lien vers celui-ci, le cas échéant). - Scott


Que diriez-vous d'utiliser la commande mklink? C: \ Windows \ System32> mklink Crée un lien symbolique.

MKLINK [[/ D] | [/ H] | [/ J]] Cible du lien

    /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.

9
2018-04-24 16:26



Bonne idée, mais les liens symboliques semblent se comporter un peu différemment des raccourcis. Si je crée un raccourci vers une solution Visual Studio, il ouvre correctement tous les projets à chemin relativement. Cependant, si j'ouvre la même solution via un lien symbolique, le répertoire de travail est celui du chemin dans lequel réside le lien symbolique, et non le chemin auquel il fait référence. - Walter Stabosz


Après toutes les discussions que nous avons eues ici, voici ma solution suggérée: Télécharger: http://optimumx.com/download/Shortcut.zip extrayez-le sur votre bureau (par exemple). Supposons maintenant que vous souhaitiez 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écuter: Shortcut.exe /f:"%USERPROFILE%\Desktop\sc.lnk" /a:c /t:%USERPROFILE%\Desktop\scrum.pdf

il va créer un raccourci appelé sc.lnk sur votre bureau qui pointe vers le fichier d'origine (scrum.pdf)


7
2018-02-20 18:42



Ce n'est pas un raccourci; c'est juste un fichier batch qui appelle un programme spécifié. - Keith Thompson
un raccourci est quelque chose que vous exécutez à partir de Windows, car il a utilisé CMD dans le titre et a placé le tag "ligne de commande". Je suppose qu'il veut l'exécuter depuis CMD. Un fichier de commandes est l'équivalent d'une fenêtre "raccourci" lorsque vous exécutez CMD (dos like) env. - alfasin
Comme il a mis "raccourci (fichier .lnk)" dans le corps de la question, j'ai supposé qu'il voulait créer un raccourci réel. - Keith Thompson
désolé pour la clarté je voulais avoir une icône sur mon bureau que j'ai fait en cmd qui serait un raccourci vers un fichier exe - Shantanu
maintenant que j'ai enfin compris (penseur lent - que pouvez-vous faire ...) j'ai changé ma réponse. J'espère que cela aide! - alfasin


Ce programme gratuit a des fonctionnalités requises http://www.nirsoft.net/utils/nircmd2.html: (extrait de cette 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 exemple à essayer: raccourci nircmd.exe "c: \ windows \ system32 \ calc.exe" "~ $ folder.desktop $" "Calculatrice Windows"


0
2018-04-12 19:14





Je sais que ce sujet est ancien mais je voulais fournir la solution simple qui fonctionnait pour moi.

J'ai d'abord copié le fichier .ico sur mon lecteur C :. Ensuite, j'ai créé le raccourci sur mon bureau et défini l'icône sur le fichier ico sur mon lecteur C :. J'ai ensuite copié le fichier .ico et le raccourci vers un partage réseau auquel mes utilisateurs ont accès. Une fois là-bas, j'ai écrit le fichier de commandes suivant pour copier l'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 icône que j'ai défini lors de la création du raccourci. J'espère que ça aidera quelqu'un.

@echo off
Copy "\\sharename\folder\icon.ico" "C:\"
pause
copy "\\sharename\folder\shortcut.url" "C:\Users\All Users\Desktop"
pause

0
2017-07-21 15:01



S'il s'agit de l'approche à adopter, il est préférable de créer le raccourci actuel (.lnk) qui contient l'icône. Ce raccourci peut alors être copié partout. - LPChip