Come creare un collegamento da CMD?
Come posso creare un file di collegamento (.lnk
) ad un altro file o eseguibile, utilizzando le utilità della riga di comando?
Come posso creare un file di collegamento (.lnk
) ad un altro file o eseguibile, utilizzando le utilità della riga di comando?
Ci sono alcune informazioni molto utili su questo sito: http://ss64.com/nt/shortcut.html &003
Sembra che ci sia un po’ di shortcut.exe
in qualche kit di risorse che non ho.
Come molti altri siti menzionano, non c'è un modo incorporato per farlo da un file batch.
Ma si può fare da uno script VB:
Le sezioni opzionali nel VBscript qui sotto sono commentate:
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
Quindi, se davvero devete farlo, allora potreste far scrivere al vostro file batch lo script VB su disco, invocarlo e poi rimuoverlo di nuovo. Per esempio, in questo modo:
@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
``` ```
@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
L'esecuzione dello script di cui sopra comporta un nuovo collegamento sul mio desktop:
Ecco un frammento più completo di un collaboratore anonimo (aggiornato con una correzione minore):
&001
Ecco una soluzione simile che utilizza powershell (so che probabilmente potete riscrivere l'intero file batch in PS, ma se volete solo Get It 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()"
``` ```
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}
Potreste dover specificare esplicitamente il percorso di PS nel vostro file, ma dovrebbe funzionare. Ci sono anche alcuni attributi aggiuntivi che si possono maneggiare attraverso questo oggetto:
&001
Oltre a shortcut.exe, è anche possibile utilizzare la versione a riga di comando di NirCmd per creare una scorciatoia http://nircmd.nirsoft.net/shortcut.html
Che ne dite di usare il comando mklink? C:\Windows\System32>mklink Crea un collegamento simbolico.
MKLINK [[/D] | [/H] | [/J]] | [/J]] Link 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.
Dopo tutte le discussioni che abbiamo avuto qui, questa è la soluzione che ho suggerito: scaricare: http://optimumx.com/download/Shortcut.zip estrailo sul tuo desktop (per esempio). Ora, supponiamo che si voglia creare un collegamento per un file chiamato scrum.pdf (anche sul desktop):
1. aprire CMD e andare alla cartella desktop
2. eseguire: Shortcut.exe /f:"%USERPROFILE%\Desktop\sc.lnk" /a:c /t:%USERPROFILE%\Desktop\scrum.pdf
creerà un collegamento chiamato sc.lnk sul desktop che punterà al file originale (scrum.pdf)
So che questo argomento è vecchio ma volevo fornire la semplice soluzione che ha funzionato per me.
Ho copiato per la prima volta il file .ico sul mio drive C:. Poi ho creato il collegamento sul mio desktop e ho impostato l'icona sul file ico sul mio drive C:. Ho poi copiato sia il file .ico che il collegamento a una condivisione di rete a cui hanno accesso i miei utenti. Una volta lì ho scritto il seguente file batch per copiare il file ico e il .url sul desktop di windows 7 degli utenti. Questo crea il collegamento sul desktop di tutti gli utenti e mantiene il file di icone che ho impostato quando ho creato il collegamento. Spero che questo aiuti qualcuno.
@echo off
Copy "\sharename\folder\icon.ico" "C:\"
pause
copy "\sharename\folder\shortcut.url" "C:\Users\All Users\Desktop"
pause
Questo programma gratuito ha richiesto la funzionalità http://www.nirsoft.net/utils/nircmd2.html : (campione da detta pagina 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"
Il mio campione da provare: nircmd.exe scorciatoia “c:\windows\system32\calc.exe” “~$folder.desktop$” “Windows Calculator”