71 votos

¿Cómo hacer un acceso directo del CMD?

¿Cómo puedo crear un archivo de acceso directo ( .lnk ) a otro archivo o ejecutable, mediante utilidades de línea de comandos?

49voto

OGP Puntos 101

Hay información muy útil en este sitio: http://ss64.com/nt/shortcut.html

Parece que hay algunos shortcut.exe en algunos kit de recursos de los cuales no tengo.
Como muchos otros sitios de mencionar, no hay manera integrada de hacerlo desde un archivo por lotes.

Pero usted puede hacerlo de una de VB script:

Secciones opcionales en el VBscript a continuación se comentan:

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

Por lo tanto, si usted realmente debe hacerlo, entonces usted puede hacer que su archivo de proceso por lotes de escritura de VB script para el disco, invocarlo y remover de nuevo. Por ejemplo, así:

@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

Ejecuta la secuencia de comandos anterior resulta en un nuevo acceso directo en mi escritorio:
Resulting shortcut

He aquí una más completa fragmento de un contribuyente anónimo (actualizado con un menor de edad fix):

@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

16voto

While Loop Puntos 81

Además de shortcut.exe, también puede utilizar la versión de línea de comandos de NirCmd para crear acceso directo. http://NirCmd.NirSoft.net/Shortcut.html

7voto

alfasin Puntos 342

Después de todas las discusiones que hemos tenido aquí, esta es mi propuesta de solución: descargar: http://optimumx.com/download/Shortcut.zip extraer en el escritorio (por ejemplo). Ahora, supongamos que desea crear un acceso directo de un archivo llamado scrum.pdf (también en el escritorio):
1. abrir CMD y vaya a la carpeta del escritorio
2. ejecutar: Shortcut.exe /f:"%USERPROFILE%\Desktop\sc.lnk" /a:c /t:%USERPROFILE%\Desktop\scrum.pdf

se creará un acceso directo llamado sc.lnk en su escritorio que le señale el archivo original (scrum.pdf)

0voto

Mike Puntos 47

¿Qué comando mklink? C:\windows\system32 > mklink crea un enlace simbólico.

MKLINK [[/D] | [/H] | [/J]] Enlace destino

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

0voto

Tomas Puntos 11

Aquí está una solución similar usando powershell (sé, probablemente puede re-escribir el archivo de toda la masa en PS, pero si sólo quieres ™ Haz hecho...)

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()"

Usted puede han a explícitamente especificar la ruta al PS en su archivo, pero debería funcionar. Hay algunos atributos adicionales que puede destrozar a través de este objeto, también:

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} 

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: