Como fazer um atalho do CMD?
Como posso criar um ficheiro de atalho (.lnk
) para outro ficheiro ou executável, utilizando utilitários de linha de comandos?
Como posso criar um ficheiro de atalho (.lnk
) para outro ficheiro ou executável, utilizando utilitários de linha de comandos?
Existe alguma informação muito útil neste site: http://ss64.com/nt/shortcut.html
Parece que há alguns shortcut.exe
em algum kit de recursos que eu não tenho.
Como muitos outros sites mencionam, não há uma forma integrada de o fazer a partir de um ficheiro batch.
Mas pode fazê-lo a partir de um script VB:
As secções opcionais no script VB abaixo são 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
Então, se realmente necessário fazê-lo, então pode fazer com que o seu ficheiro batch escreva o script VB no disco, invoque-o e depois remova-o novamente. Por exemplo:
@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 num novo atalho no meu ambiente de trabalho:
Aqui está um trecho mais completo de um colaborador anónimo (actualizado com uma pequena correcção):
@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
Aqui está uma solução semelhante utilizando o powerhell (eu sei, provavelmente pode reescrever todo o seu ficheiro de lote em PS, mas se quiser apenas Obtê-lo 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()"
Pode ter de explicar o caminho para o PS no seu ficheiro, mas deve funcionar. Existem alguns atributos adicionais que também pode alterar através deste objecto:
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}
Além do atalho.exe, você também pode usar a versão de linha de comando do NirCmd para criar o atalho http://nircmd.nirsoft.net/shortcut.html
Que tal usar o comando mklink ? C:\Windows\System32>mklink Cria uma ligação simbólica.
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.
Depois de todas as discussões que aqui tivemos, esta é a minha solução sugerida: download : http://optimumx.com/download/Shortcut.zip extrai-a no vosso ambiente de trabalho (por exemplo). Agora, suponha que quer criar um atalho para um ficheiro chamado scrum.pdf (também no desktop):
1. abra o CMD e vá para a pasta do desktop
2. corra: Shortcut.exe /f:"%USERPROFILE%\Desktop\sc.lnk" /a:c /t:%USERPROFILE%\Desktop\scrum.pdf
irá criar um atalho chamado sc.lnk no seu desktop que irá apontar para o ficheiro original (scrum.pdf)
Eu sei que este tópico é antigo mas eu queria fornecer a solução simples que funcionava para mim.
Primeiro copiei o ficheiro .ico para a minha drive C:. Depois criei o atalho no meu ambiente de trabalho e coloquei o ícone para o ficheiro ico na minha unidade C:. Depois copiei tanto o ficheiro .ico como o atalho para uma partilha de rede a que os meus utilizadores têm acesso. Uma vez lá escrevi o seguinte ficheiro de lote para copiar o ico e .url para o ambiente de trabalho dos utilizadores do Windows 7. Isto cria o atalho na área de trabalho de todos os utilizadores e mantém o ficheiro de ícones que defini ao criar o atalho. Espero que isto ajude alguém.
@echo off
Copy "\sharename\folder\icon.ico" "C:\"
pause
copy "\sharename\folder\shortcut.url" "C:\Users\All Users\Desktop"
pause
Este programa gratuito tem a funcionalidade necessária http://www.nirsoft.net/utils/nircmd2.html : (exemplo da referida 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"
Meu próprio exemplo para tentar: nircmd.exe atalho “c:\system32\calc.exe” “~$folder.desktop$” “Windows Calculadora”