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?
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.
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.).
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
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.
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
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
::********************************************************************************************
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.
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:
.url
sont destinés à ouvrir des pages Web, mais ils fonctionnent correctement pour tout URI correctement construit..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