วิธีสร้างทางลัดจาก CMD?


76

ฉันจะสร้างไฟล์ทางลัด ( .lnk) ไปยังไฟล์อื่นหรือเรียกใช้งานได้โดยใช้ยูทิลิตี้บรรทัดคำสั่งได้อย่างไร


1
ดูเหมือนจะไม่มีวิธีที่ตรงไปตรงมาในการทำเช่นนั้น บางคนมีเครื่องมือเขียนที่ให้คุณทำ นี่เป็นหนึ่งในพวกเขา การค้นหาของ Google สำหรับ "windows สร้างทางลัดบรรทัดคำสั่ง" เปิดขึ้นบางคนอื่น ๆ (ฉันไม่ได้ลองเลย)
Keith Thompson

@iglvzx - ฉันไม่แน่ใจว่าการแก้ไขที่คุณทำนั้นถูกต้อง ฉันไม่คิดว่า Shantanu ต้องการชุดสคริปต์ - อาจเป็นวิธีการสร้าง * .lnk ไปยังไฟล์ * .exe อื่น
alfasin

@alfasin ฉันเพิ่ม(.ink file)เนื่องจากมีความสับสน ฉันแก้ไขคำถามเพื่อสะท้อนความคิดเห็นของ Shantanu แม้ว่าคุณจะมีวิธีในการสร้าง 'ทางลัด' แต่ก็ไม่ได้ตอบคำถามเฉพาะนี้
iglvzx

1
ใช้สิ่งต่อไปนี้: powershell "$ s = (New-Object -COM WScript.Shell) .CreateShortcut ('% userprofile% \ Desktop \ ทางลัด. lnk'); $ s.TargetPath = 'C: \ Windows \'; $ s .Save () "ชัดเจนแทนที่" '% userprofile% \ Desktop \ ทางลัด. lnk "และ" C: \ Windows \ "ด้วยเส้นทางลัดและเส้นทางเป้าหมายของคุณตามลำดับ
ประสานงาน

@cowlinator ตามที่พิมพ์คำแนะนำของคุณไม่ทำงาน
Ploni

คำตอบ:


53

มีข้อมูลที่มีประโยชน์มากในไซต์นี้: http://ss64.com/nt/shortcut.html

ดูเหมือนว่ามีบางอย่างshortcut.exeในชุดทรัพยากรบางอย่างที่ฉันไม่ได้มี
ดังที่เว็บไซต์อื่น ๆ กล่าวถึงไม่มีวิธีการติดตั้งในตัวจากไฟล์แบตช์

แต่คุณสามารถทำได้จากสคริปต์ VB:

ส่วนเพิ่มเติมใน VBscript ด้านล่างนี้ได้รับการใส่ความคิดเห็น:

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

ดังนั้นถ้าคุณต้องทำมันจริงๆคุณสามารถทำให้ไฟล์แบตช์ของคุณเขียนสคริปต์ VB ลงบนดิสก์เรียกใช้แล้วลบมันอีกครั้ง ตัวอย่างเช่น:

@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

การเรียกใช้สคริปต์ข้างต้นส่งผลให้มีทางลัดใหม่บนเดสก์ท็อปของฉัน:
ส่งผลให้ทางลัด

นี่คือตัวอย่างที่สมบูรณ์มากขึ้นจากผู้มีส่วนร่วมที่ไม่ระบุชื่อ (อัปเดตด้วยการแก้ไขเล็กน้อย):

@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

1
ที่เกี่ยวข้อง: MSDN, Shell Links
iglvzx

ใช้งานได้ดีเยี่ยมสำหรับทางลัดไปยังไฟล์ อย่างไรก็ตามฉันมีปัญหาแปลก ๆ ที่ใช้มันสำหรับทางลัดไปยังโฟลเดอร์เมื่อตัวแปร Esc_LinkTarget ของฉันมีตัวแปรสภาพแวดล้อมที่พยายามรับโฟลเดอร์แม่ (บางอย่างเช่น% CD% \ .. ไม่ทำงาน แต่% CD% ใช้งานได้) ประเภทเป้าหมายทางลัดกลายเป็น 'ไฟล์' แทน 'โฟลเดอร์'
EDM

1
@Edmund ปัญหาที่น่าสนใจ ฉันไม่มีเวลาที่จะตรวจสอบมัน แต่ฉันจะสมมติว่าเฉือนท้ายอาจสร้างความแตกต่าง
Der Hochstapler

หมายเหตุ: หากคุณใช้งานSET Esc_LinkTarget=%0คุณจะต้องลบออก"จากecho oLink.TargetPath = oWS.ExpandEnvironmentStrings^(!Esc_LinkTarget!^)
Black

แทนที่จะสร้าง vbscript สำหรับแต่ละการดำเนินการมันจะดีกว่าที่จะใช้Wscript.Argumentsเพื่อรับอาร์กิวเมนต์บรรทัดคำสั่ง ... lol
Sancarn

22

ต่อไปนี้เป็นโซลูชันที่คล้ายกันโดยใช้ PowerShell (ฉันรู้ว่าคุณอาจจะเขียนไฟล์แบตช์ทั้งหมดของคุณใหม่ใน PS แต่ถ้าคุณแค่อยากให้มันเสร็จ™ ... )

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

คุณอาจต้องอธิบายให้ชัดเจนระบุเส้นทางไปยัง PS ในไฟล์ของคุณ แต่มันควรจะได้ผล มีคุณสมบัติเพิ่มเติมบางอย่างที่คุณสามารถคลานผ่านวัตถุนี้ได้เช่นกัน:

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 : หากคุณเชื่อว่าคุณมีวิธีที่ดีกว่าในการทำเช่นนี้เพียงโพสต์เป็นคำตอบใหม่ (เชื่อมโยงกับสิ่งนี้หากเหมาะสม)
สกอตต์

17

นอกจากทางลัด.exeคุณสามารถใช้เวอร์ชันบรรทัดคำสั่งของ NirCmd เพื่อสร้างทางลัด http://nircmd.nirsoft.net/shortcut.html


11
ฉันขอแนะนำเกือบทุกอย่างจาก NirSoft มันเป็นชุดเครื่องมือที่เกินบรรยายที่สุด
That Brazilian Guy

10

วิธีการเกี่ยวกับการใช้คำสั่ง mklink? C: \ Windows \ System32> mklink สร้างลิงค์สัญลักษณ์

MKLINK [[/ D] | [/ H] | [/ J]] ลิงก์เป้าหมาย

    /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
ความคิดที่ดี แต่ symlink ดูเหมือนจะทำงานแตกต่างจากทางลัดเล็กน้อย ถ้าฉันสร้างทางลัดไปยังโซลูชัน Visual Studio มันจะเปิดโครงการค่อนข้างเส้นทางทั้งหมดได้อย่างถูกต้อง อย่างไรก็ตามถ้าฉันเปิดโซลูชันเดียวกันผ่าน symlink ไดเรกทอรีทำงานคือเส้นทางที่ symlink ตั้งอยู่ไม่ใช่เส้นทางที่อ้างถึง
วอลเตอร์ Stabosz

7

หลังจากการอภิปรายทั้งหมดที่เรามีที่นี่เป็นวิธีแก้ปัญหาของฉันที่แนะนำ: ดาวน์โหลด: http://optimumx.com/download/Shortcut.zip แยกมันออกมาบนเดสก์ท็อปของคุณ (ตัวอย่าง) ตอนนี้สมมติว่าคุณต้องการสร้างทางลัดสำหรับไฟล์ที่เรียกว่า scrum.pdf (บนเดสก์ท็อป):
1. เปิด CMD และไปที่โฟลเดอร์เดสก์ท็อป
2. รัน:Shortcut.exe /f:"%USERPROFILE%\Desktop\sc.lnk" /a:c /t:%USERPROFILE%\Desktop\scrum.pdf

มันจะสร้างทางลัดที่เรียกว่า sc.lnk บนเดสก์ท็อปของคุณซึ่งจะชี้ไปที่ไฟล์ต้นฉบับ (scrum.pdf)


นั่นไม่ใช่ทางลัด มันเป็นเพียงไฟล์แบทช์ที่เรียกใช้โปรแกรมที่ระบุ
Keith Thompson

1
ทางลัดเป็นสิ่งที่คุณเรียกใช้จาก windows เนื่องจากเขาใช้ CMD ในชื่อและวางแท็ก "command-line" ฉันคิดว่าเขาต้องการเรียกใช้จาก CMD ไฟล์แบตช์เทียบเท่ากับ "ทางลัด" ของ windows เมื่อคุณเรียกใช้ใน CMD (dos like) env
alfasin

2
เนื่องจากเขาใส่ "ทางลัด (.lnk ไฟล์)" ไว้ในเนื้อความของคำถามฉันจึงคิดว่าเขาต้องการสร้างทางลัดจริง
Keith Thompson

1
ขอโทษสำหรับความชัดเจนฉันต้องการที่จะมีไอคอนบนเดสก์ทอปของฉันที่ฉันทำในคำสั่งที่จะเป็นทางลัดไปยังไฟล์ exe ที่
Shantanu

ในที่สุดตอนนี้ฉันก็เข้าใจ (นักคิดช้า - คุณสามารถทำอะไรได้ ... ) ฉันเปลี่ยนคำตอบ หวังว่ามันจะช่วย!
alfasin

0

โปรแกรมฟรีนี้จำเป็นต้องใช้ฟังก์ชั่นhttp://www.nirsoft.net/utils/nircmd2.html : (ตัวอย่างจากหน้าเว็บดังกล่าว) "Create a shortcut to Windows calculator under Start Menu->Programs->Calculators nircmd.exe shortcut "f:\winnt\system32\calc.exe" "~$folder.programs$\Calculators" "Windows Calculator"

ตัวอย่างของฉันเองที่จะลอง: ทางลัด nircmd.exe "c: \ windows \ system32 \ calc.exe" "~ $ folder.desktop $" "เครื่องคิดเลข Windows"


0

ฉันรู้ว่าหัวข้อนี้เก่า แต่ฉันต้องการเสนอวิธีแก้ปัญหาที่ง่ายสำหรับฉัน

ฉันคัดลอกไฟล์. ico ไปยังไดรฟ์ C: ก่อน จากนั้นฉันสร้างทางลัดบนเดสก์ท็อปและตั้งไอคอนเป็นไฟล์ ico บนไดรฟ์ C: ฉันคัดลอกทั้ง .ico และทางลัดไปยังเครือข่ายที่ผู้ใช้ของฉันสามารถเข้าถึงได้ เมื่อนั้นฉันเขียนไฟล์แบตช์ต่อไปนี้เพื่อคัดลอก ico และ. url ไปยังเดสก์ท็อป windows 7 ของผู้ใช้ สิ่งนี้จะสร้างทางลัดบนเดสก์ท็อปของผู้ใช้ทั้งหมดและเก็บไฟล์ไอคอนที่ฉันตั้งไว้เมื่อสร้างทางลัด ฉันหวังว่านี่จะช่วยให้ใครบางคน

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

หากนี่เป็นวิธีการที่ใช้จะเป็นการดีกว่าที่จะสร้างทางลัดจริง (.lnk) ซึ่งฝังไอคอนไว้ ทางลัดนั้นสามารถคัดลอกได้ทุกที่
LPChip
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.