CMD'den kısayol nasıl yapılır?


76

.lnkKomut satırı yardımcı programlarını kullanarak başka bir dosya veya yürütülebilir dosyaya kısayol dosyası ( ) nasıl oluşturabilirim ?


1
Bunu yapmanın kolay bir yolu görünmüyor. Bazı insanlar bunu yapmanıza izin veren araçlar yazmıştır; işte onlardan biri . "Windows kısayol oluşturma komut satırı" için bir Google araması, bazılarını açar. (Bunlardan hiçbirini denemedim.)
Keith Thompson

@iglvzx - Yaptığınız düzenlemenin doğru olduğundan emin değilim. Shantanu'nun bir toplu komut dosyasına ihtiyacı olduğunu sanmıyorum - başka bir * .exe dosyasına * .lnk oluşturmanın herhangi bir yolu olabilir.
alfasin,

@ alfasin ekledim (.ink file), bazı karışıklıklar olduğu için. Shantanu'nun yorumunu yansıtan soruyu revize ettim. 'Kısayollar' yapmanın bir yolunu sunarken, bu belirli soruyu yanıtlamaz.
iglvzx

1
Aşağıdakileri kullanın: powershell "$ s = (Yeni Nesne -COM WScript.Shell) .CreateShortcut ('% userprofile% \ Desktop \ shortcut.lnk'); $ s.TargetPath = 'C: \ Windows \'; $ s .Save () "Açıkçası," '% userprofile% \ Desktop \ shortcut.lnk "ve" C: \ Windows \ "' i kısayol yolunuzla ve hedef yolunuzla değiştirin.
Cowlinator

@cowlinator Yazdığınız gibi, öneriniz çalışmıyor.
Ploni

Yanıtlar:


53

Bu sitede bazı çok yararlı bilgiler var: http://ss64.com/nt/shortcut.html

shortcut.exeBenim sahip olmadığım bazı kaynak setlerinde var gibi gözüküyor .
Diğer birçok sitenin dediği gibi, bir toplu iş dosyasından yapmanın yerleşik bir yolu yoktur.

Ancak bunu bir VB komut dosyasından yapabilirsiniz:

Aşağıdaki VBscript'teki isteğe bağlı bölümler yorumlanmıştır:

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

Eğer gerçekten Yani, eğer gerekir bunu, o zaman, senin toplu iş dosyası diske VB senaryo yazmaya yapmak onu çağırmak ve yeniden kaldırabilir. Örneğin, bunun gibi:

@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

Yukarıdaki betiğin çalıştırılması masaüstümdeki yeni bir kısayolla sonuçlandı:
Sonuç kısayolu

İşte isimsiz bir katılımcıdan daha eksiksiz bir snippet (küçük bir düzeltme ile güncellendi):

@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


Bu bir dosyanın kısayolu için harika çalışıyor. Ancak, Esc_LinkTarget değişkenim üst klasörünü almaya çalışırken bir ortam değişkeni içerdiğinde, onu bir klasöre kısayol için kullanmakta garip bir sorun yaşıyorum. (% CD% \ .. gibi bir şey çalışmıyor, ancak% CD% çalışıyor). Kısayol hedef türü 'Klasör' yerine bir 'Dosya' olur
EDM

1
@Edmund İlginç problem. Bunu incelemek için zamanım yok, ama sondaki bağlantının bir fark yaratacağını varsayardım.
Der Hochstapler

Not: Kullanmak eğer SET Esc_LinkTarget=%0o zaman kaldırmak zorunda "denecho oLink.TargetPath = oWS.ExpandEnvironmentStrings^(!Esc_LinkTarget!^)
Siyah

Her yürütme için bir vbscript oluşturmak yerine Wscript.Arguments, komut satırı argümanlarını elde etmek çok daha iyi olurdu ... lol
Sancarn

22

İşte powershell kullanarak benzer bir çözüm (Biliyorum, muhtemelen tüm toplu iş dosyanızı PS'ye yeniden yazabilirsiniz, ancak sadece Tamamlandı ™ almak istiyorsanız ...)

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

Dosyanızda PS'nin yolunu belirtmeniz gerekebilir, ancak çalışması gerekir. Bu nesneyle de ilgilenebileceğiniz bazı ek özellikler var:

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} 

Trix : Bunu yapmanın daha iyi bir yolunun olduğuna inanıyorsan, yeni bir cevap olarak gönder.
Scott


10

Mklink komutunu kullanmaya ne dersiniz? C: \ Windows \ System32> mklink Sembolik bir bağlantı oluşturur.

MKLINK [[/ D] | [/ H] | [/ J]] Bağlantı Hedefi

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

10
İyi fikir, ancak sembolik bağlantılar kısayollardan biraz farklı görünüyor. Bir Visual Studio çözümüne kısayol oluşturursam, göreceli olarak düzeltilmiş tüm projeleri doğru açar. Bununla birlikte, aynı çözümü bir sembolik bağlantı üzerinden açarsam, çalışma dizini, referansın verdiği yolu değil, sembolik bağın bulunduğu yoldur.
Walter Stabosz

7

Buradaki tüm tartışmalardan sonra, bu benim önerdiğim çözüm: download: http://optimumx.com/download/Shortcut.zip masaüstünüzden çıkartın (örneğin). Şimdi, scrum.pdf (ayrıca masaüstünde) adlı bir dosya için kısayol oluşturmak istediğinizi varsayalım:
1. CMD'yi açın ve masaüstü klasörüne gidin
2. çalıştırın:Shortcut.exe /f:"%USERPROFILE%\Desktop\sc.lnk" /a:c /t:%USERPROFILE%\Desktop\scrum.pdf

masaüstünüzde sc.lnk adında ve orijinal dosyaya işaret edecek bir kısayol oluşturacaktır (scrum.pdf)


Bu bir kısayol değil; Sadece belirli bir programı çağıran bir toplu iş dosyası.
Keith Thompson

1
kısayol, pencerelerden kaçtığınız bir şeydir, çünkü başlıkta CMD kullandı ve "komut satırı" etiketini koydu, bunu CMD'den çalıştırmak istediğini varsaydım. Toplu iş dosyası, CMD (dos like) env.
alfasin

2
Sorunun gövdesine "kısayol (.lnk dosyası)" koyduğundan, gerçek bir kısayol oluşturmak istediğini varsaydım.
Keith Thompson

1
netlik için üzgünüm masaüstümde bir exe dosyasına kısayol olurdu cmd yapılan bir simge olmasını istedim
Shantanu

şimdi nihayet anladım (yavaş düşünür - ne yapabilirsin ...) cevabımı değiştirdim. Umarım yardımcı olur!
alfasin

0

Bu ücretsiz program işlevselliği http://www.nirsoft.net/utils/nircmd2.html gerektirmiştir : (bahsedilen web sayfasından örnek) "Create a shortcut to Windows calculator under Start Menu->Programs->Calculators nircmd.exe shortcut "f:\winnt\system32\calc.exe" "~$folder.programs$\Calculators" "Windows Calculator"

Denemek için kendi örnek: nircmd.exe kısayolu "c: \ windows \ system32 \ calc.exe" "~ $ folder.desktop $" "Windows Hesap Makinesi"


0

Bu konunun eski olduğunu biliyorum, ancak benim için işe yarayan basit çözümü sunmak istedim.

.İco dosyasını ilk önce C: sürücüme kopyaladım. Sonra masaüstümdeki kısayolu oluşturdum ve ikonu C: sürücümdeki ico dosyasına ayarladım. Ardından hem .ico hem de kısayolu kullanıcılarımın erişebildiği bir ağ paylaşımına kopyaladım. Bir kez orada ico ve .url kullanıcıları windows 7 masaüstüne kopyalamak için aşağıdaki toplu iş dosyasını yazdım. Bu, tüm kullanıcıların masaüstünde kısayol oluşturur ve kısayolu oluştururken belirlediğim simge dosyasını tutar. Umarım bu birine yardımcı olur.

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

Alınacak yaklaşım buysa, simgeyi içine yerleştiren asıl kısayolu (.lnk) oluşturmak daha iyidir. Bu kısayol her yere kopyalanabilir.
LPChip
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.