web-dev-qa-db-fra.com

Comment créer un raccourci via une ligne de commande sous Windows?

Je veux que mon script .bat (test.bat) crée un raccourci vers lui-même afin de pouvoir le copier dans mon dossier Windows 8 Startup.

J'ai écrit cette ligne de code pour copier le fichier, mais je n'ai pas encore trouvé le moyen de créer le raccourci en question, car vous pouvez voir qu'il ne fait que copier le script.

xcopy "C:\Users\Gabriel\Desktop\test.bat" "C:\Users\Gabriel\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"

Peux-tu m'aider?

36
Maslor

Vous pouvez utiliser une commande PowerShell. Collez ceci dans votre script batch et cela créera un raccourci vers %~f0 dans %userprofile%\Start Menu\Programs\Startup:

powershell "$s=(New-Object -COM WScript.Shell).CreateShortcut('%userprofile%\Start Menu\Programs\Startup\%~n0.lnk');$s.TargetPath='%~f0';$s.Save()"

Si vous préférez ne pas utiliser PowerShell, vous pouvez utiliser mklink pour créer un lien symbolique. Syntaxe:

mklink saveShortcutAs targetOfShortcut

Voir mklink /? dans une fenêtre de console pour connaître la syntaxe complète, et cette page Web pour plus d'informations.

Dans votre script batch, faites:

mklink "%userprofile%\Start Menu\Programs\Startup\%~nx0" "%~f0"

Le raccourci créé n'est pas un fichier .lnk traditionnel, mais il devrait néanmoins fonctionner de la même manière. Sachez que cela ne fonctionnera que si le fichier .bat est exécuté à partir du même lecteur que votre dossier de démarrage. De plus, apparemment, des droits d'administrateur sont requis pour créer des liens symboliques.

43
rojo

Impossible de le faire avec pure batch.Check shortcutJS.bat - c'est un hybride jscript/bat et doit être utilisé avec l'extension .bat:

call shortcutJS.bat -linkfile "%~n0.lnk" -target  "%~f0" -linkarguments "some arguments"

Avec -help, vous pouvez vérifier les autres options (vous pouvez définir l'icône, les autorisations d'administrateur, etc.).

16
npocmaka

La réponse de Rohit Sahu a fonctionné à mon avantage sous Windows 10. La solution PowerShell a fonctionné, mais aucun raccourci n'est apparu. La solution JScript m'a donné des erreurs de syntaxe. Je n'ai pas essayé mklink, car je ne voulais pas gâcher les permissions.

Je voulais que le raccourci apparaisse sur le bureau. Mais je devais aussi définir l’icône, la description et le répertoire de travail. Notez que MyApp48.bmp est une image 48x48 pixels. Voici mon mod de la solution de Rohit:

@echo off
cd c:\MyApp
echo Set oWS = WScript.CreateObject("WScript.Shell") > CreateShortcut.vbs
echo sLinkFile = "%userprofile%\Desktop\MyApp.lnk" >> CreateShortcut.vbs
echo Set oLink = oWS.CreateShortcut(sLinkFile) >> CreateShortcut.vbs
echo oLink.TargetPath = "C:\MyApp\MyApp.bat" >> CreateShortcut.vbs
echo oLink.WorkingDirectory = "C:\MyApp" >> CreateShortcut.vbs
echo oLink.Description = "My Application" >> CreateShortcut.vbs
echo oLink.IconLocation = "C:\MyApp\MyApp48.bmp" >> CreateShortcut.vbs
echo oLink.Save >> CreateShortcut.vbs
cscript CreateShortcut.vbs
del CreateShortcut.vbs
6
DrFractal

Le meilleur moyen consiste à exécuter ce fichier de commandes. bloc-notes ouvert et tapez: -

@echo off
echo Set oWS = WScript.CreateObject("WScript.Shell") > CreateShortcut.vbs
echo sLinkFile = "GIVETHEPATHOFLINK.lnk" >> CreateShortcut.vbs
echo Set oLink = oWS.CreateShortcut(sLinkFile) >> CreateShortcut.vbs
echo oLink.TargetPath = "GIVETHEPATHOFTARGETFILEYOUWANTTHESHORTCUT" >> CreateShortcut.vbs
echo oLink.Save >> CreateShortcut.vbs
cscript CreateShortcut.vbs
del CreateShortcut.vbs

Enregistrer sous nom de fichier.bat (attention lors de la sauvegarde de sélectionner tous les types de fichiers) a bien fonctionné sous Win XP.

5
Rohit Sahu

link.vbs

set fs  = CreateObject("Scripting.FileSystemObject")
set ws  = WScript.CreateObject("WScript.Shell")
set arg = Wscript.Arguments

linkFile = arg(0)

set link = ws.CreateShortcut(linkFile)
    link.TargetPath = fs.BuildPath(ws.CurrentDirectory, arg(1))
    link.Save

commander

C:\dir>link.vbs ..\shortcut.txt.lnk target.txt
4
CodeFu

Je présente un petit script hybride [BAT/VBS] pour créer un raccourci sur le bureau. Et vous pouvez bien sûr le modifier selon vos besoins.

@echo off
mode con cols=87 lines=5 & color 9B
Title Shortcut Creator for your batch and applications files by Hackoo 2015
Set MyFile=%~f0
Set ShorcutName=HackooTest
(
echo Call Shortcut("%MyFile%","%ShorcutName%"^)
echo ^'**********************************************************************************************^)
echo Sub Shortcut(ApplicationPath,Nom^)
echo    Dim objShell,DesktopPath,objShortCut,MyTab
echo    Set objShell = CreateObject("WScript.Shell"^)
echo    MyTab = Split(ApplicationPath,"\"^)
echo    If Nom = "" Then
echo    Nom = MyTab(UBound(MyTab^)^)
echo    End if
echo    DesktopPath = objShell.SpecialFolders("Desktop"^)
echo    Set objShortCut = objShell.CreateShortcut(DesktopPath ^& "\" ^& Nom ^& ".lnk"^)
echo    objShortCut.TargetPath = Dblquote(ApplicationPath^)
echo    ObjShortCut.IconLocation = "Winver.exe,0"
echo    objShortCut.Save
echo End Sub
echo ^'**********************************************************************************************
echo ^'Fonction pour ajouter les doubles quotes dans une variable
echo Function DblQuote(Str^)
echo    DblQuote = Chr(34^) ^& Str ^& Chr(34^)
echo End Function
echo ^'**********************************************************************************************
) > Shortcutme.vbs
Start /Wait Shortcutme.vbs
Del Shortcutme.vbs
::***************************************Main Batch*******************************************
cls
echo Done and your main batch goes here !
echo i am a test 
Pause > Nul
::********************************************************************************************
2
Hackoo

NirCMD de Nirsoft peut également créer des raccourcis à partir d'une ligne de commande. (Avec une pile d'autres fonctions.) Gratuit et disponible ici:

http://www.nirsoft.net/utils/nircmd.html

Instructions complètes ici: http://www.nirsoft.net/utils/nircmd2.html#using (Descendez à la section "raccourci".)

Oui, utiliser nircmd signifie que vous utilisez un autre fichier .exe tiers, mais il peut exécuter certaines fonctions ne figurant pas dans (la plupart des) solutions ci-dessus (par exemple, choisir une icône # dans une DLL avec plusieurs icônes, attribuer un raccourci clavier et définissez la cible de raccourci à minimiser ou à maximiser).

Il semble bien que la solution shortcutjs.bat ci-dessus puisse également résoudre ce problème, mais vous devrez creuser davantage pour savoir comment attribuer correctement ces paramètres. Nircmd est probablement plus simple.

2
Matt Borcherding

Je voudrais proposer une solution différente, non mentionnée ici, qui utilise les fichiers .URL:

set SHRT_LOCA=%userprofile%\Desktop\new_shortcut2.url
set SHRT_DEST=C:\Windows\write.exe
echo [InternetShortcut]> %SHRT_LOCA%
echo URL=file:///%SHRT_DEST%>> %SHRT_LOCA%
echo IconFile=%SHRT_DEST%>> %SHRT_LOCA%
echo IconIndex=0>> %SHRT_LOCA%

Remarques:

  • Par défaut, les fichiers .url sont destinés à ouvrir des pages Web, mais ils fonctionnent correctement pour tout URI correctement construit.
  • Microsoft Windows n'affiche pas l'extension de fichier .url même si l'option "Masquer les extensions des types de fichiers connus" de l'Explorateur Windows est désactivée.
  • IconFile et IconIndex sont facultatifs
  • Pour référence, vous pouvez vérifier Guide non officiel du format de fichier URL d'Edward Blake
0
n3vermind