2012-02-20 18:24:10 +0000 2012-02-20 18:24:10 +0000
81
81

¿Cómo hacer un atajo desde CMD?

¿Cómo puedo crear un archivo de atajo (.lnk) a otro archivo o ejecutable, usando las utilidades de la línea de comando?

Respuestas (8)

56
56
56
2012-02-20 20:06:04 +0000

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

Parece que hay algo de shortcut.exe en algún kit de recursos que no tengo. Como muchos otros sitios mencionan, no hay una forma incorporada de hacerlo desde un archivo por lotes.

Pero puedes hacerlo desde un script VB:

Las secciones opcionales en el VBscript de abajo están comentadas:

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

Así que, si realmente debes hacerlo, entonces podrías hacer que tu archivo por lotes escriba el script VB en el disco, invocarlo y luego eliminarlo 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

Ejecutar el anterior script resulta en un nuevo acceso directo en mi escritorio:

Aquí hay un fragmento más completo de un colaborador anónimo (actualizado con una pequeña corrección):

@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
24
24
24
2014-11-06 18:05:38 +0000

Aquí hay una solución similar usando powershell (lo sé, probablemente puedas reescribir todo tu archivo por lotes en PS, pero si sólo quieres 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()"

Puede que tengas que especificar explícitamente la ruta a PS en tu archivo, pero debería funcionar. Hay algunos atributos adicionales que puedes manejar 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}
17
17
17
2013-09-30 23:24:55 +0000

Además del atajo.exe, también puedes usar la versión de línea de comandos del NirCmd para crear un atajo http://nircmd.nirsoft.net/shortcut.html

12
12
12
2014-04-24 16:26:05 +0000

¿Qué tal si usamos el comando mklink? C:\N-Sistema32>mklink Crea un enlace simbólico.

MKLINK [[/D] | [/H] | [/J]] Objetivo de enlace

/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.
7
7
7
2012-02-20 18:42:56 +0000

Después de todas las discusiones que hemos tenido aquí, esta es mi solución sugerida: descargar: http://optimumx.com/download/Shortcut.zip extraerlo en su escritorio (por ejemplo). Ahora, supongamos que quieres crear un atajo para un archivo llamado scrum.pdf (también en el escritorio): 1. abre CMD y ve a la carpeta del escritorio 2. ejecuta: Shortcut.exe /f:"%USERPROFILE%\Desktop\sc.lnk" /a:c /t:%USERPROFILE%\Desktop\scrum.pdf

creará un atajo llamado sc.lnk en tu escritorio que apuntará al archivo original (scrum.pdf)

0
0
0
2015-07-21 15:01:08 +0000

Sé que este tema es antiguo pero quería proporcionar la solución simple que me funcionó.

Primero copié el archivo .ico a mi unidad C:. Luego creé el atajo en mi escritorio y puse el icono en el archivo ico de mi unidad C:. Luego copié ambos, el .ico y el atajo a una red compartida a la que mis usuarios tienen acceso. Una vez allí, escribí el siguiente archivo por lotes para copiar el ico y el .url al escritorio de los usuarios de Windows 7. Esto crea el atajo en el escritorio de todos los usuarios y mantiene el archivo de icono que establecí al crear el atajo. Espero que esto ayude a alguien.

@echo off
Copy "\sharename\folder\icon.ico" "C:\"
pause
copy "\sharename\folder\shortcut.url" "C:\Users\All Users\Desktop"
pause
0
0
0
2015-04-12 19:14:32 +0000

Este programa gratuito ha requerido funcionalidad http://www.nirsoft.net/utils/nircmd2.html : (muestra de dicha página 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"

Mi propia muestra para probar: nircmd.exe atajo “c:\windows\system32\calc.exe” “~$carpeta.desktop$” “Calculadora de Windows”

0
0
0
2020-01-24 16:58:48 +0000