Como criar um atalho a partir do CMD?

69

Como posso criar um arquivo de atalho ( .lnk ) para outro arquivo ou executável usando utilitários de linha de comando?

    
por Shantanu 20.02.2012 / 19:24

7 respostas

46

Há algumas informações muito úteis neste site: link

Parece que há algum shortcut.exe em algum kit de recursos que eu não tenho.
Como muitos outros sites mencionam, não há uma maneira interna de fazer isso a partir de um arquivo em lotes.

Mas você pode fazer isso a partir de um script VB:

Optional sections in the VBscript below are commented out:

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

Então, se você realmente deve fazê-lo, então você pode fazer com que seu arquivo em lote grave o script VB no disco, invoque-o e remova-o novamente. Por exemplo, assim:

@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

A execução do script acima resulta em um novo atalho na minha área de trabalho:

Esteéumsnippetmaiscompletodeumcolaboradoranônimo(atualizadocomumacorreçãomenor):

@echooffSETLOCALENABLEDELAYEDEXPANSIONSETLinkName=HelloSETEsc_LinkDest=%%HOMEDRIVE%%%%HOMEPATH%%\Desktop\!LinkName!.lnkSETEsc_LinkTarget=%%SYSTEMROOT%%\notepad.exeSETcSctVBS=CreateShortcut.vbsSETLOG=".\%~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
    
por 20.02.2012 / 21:06
18

Aqui está uma solução semelhante usando o powershell (eu sei, você provavelmente pode reescrever todo o seu arquivo de lote no PS, mas se você quer apenas 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()"

Você pode ter que especificar explicitamente o caminho para o PS em seu arquivo, mas deve funcionar. Existem alguns atributos adicionais que você também pode manipular por meio deste objeto:

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} 
    
por 06.11.2014 / 19:05
16

Além do shortcut.exe, você também pode usar a versão de linha de comando do NirCmd para criar um atalho. link

    
por 01.10.2013 / 01:24
9

Que tal usar o comando mklink? C: \ Windows \ System32 > mklink Cria um link simbólico.

MKLINK [[/ D] | [/ H] | [/ 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.
    
por 24.04.2014 / 18:26
7

Depois de todas as discussões que tivemos aqui, esta é a minha solução sugerida: download: link extraí-lo em sua área de trabalho (por exemplo). Agora, suponha que você queira criar um atalho para um arquivo chamado scrum.pdf (também na área de trabalho):
1. abra o CMD e vá para a pasta desktop 2. execute: Shortcut.exe /f:"%USERPROFILE%\Desktop\sc.lnk" /a:c /t:%USERPROFILE%\Desktop\scrum.pdf

ele criará um atalho chamado sc.lnk na sua área de trabalho que apontará para o arquivo original (scrum.pdf)

    
por 20.02.2012 / 19:42
0

Este programa gratuito exigiu a funcionalidade link : (amostra da referida página da 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"

Meu próprio exemplo para tentar: atalho nircmd.exe "c: \ windows \ system32 \ calc.exe" "~ $ folder.desktop $" "Calculadora do Windows"

    
por 12.04.2015 / 21:14
0

Eu sei que este tópico é antigo, mas queria fornecer a solução simples que funcionou para mim.

Primeiro copiei o arquivo .ico para minha unidade C :. Então eu criei o atalho na minha área de trabalho e definir o ícone para o arquivo ico na minha unidade C :. Em seguida, copiei o .ico e o atalho para um compartilhamento de rede ao qual meus usuários têm acesso. Uma vez lá, escrevi o seguinte arquivo em lote para copiar o ico e o .url para a área de trabalho do Windows 7 dos usuários. Isso cria o atalho na área de trabalho de todos os usuários e mantém o arquivo de ícone que eu configurei ao criar o atalho. Espero que isso ajude alguém.

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