سؤال كيفية عمل اختصار من CMD؟


كيف يمكنني إنشاء ملف اختصار (.lnk) إلى ملف آخر أو قابل للتنفيذ ، وذلك باستخدام المرافق سطر الأوامر؟


69
2018-02-20 18:24


الأصل


لا يبدو أن هناك أي طريقة مباشرة للقيام بذلك. بعض الناس لديهم أدوات مكتوبة تتيح لك القيام بذلك ؛ وهنا واحد منهم. البحث في Google عن "النوافذ إنشاء سطر الأوامر المختصرة" يحضر بعض الآخرين. (لم أحاول أي منها.) - Keith Thompson
iglvzx - لست متأكدًا من أن التعديل الذي أجريته صحيح. لا أعتقد أن Shantanu يحتاج إلى برنامج نصي دفعة - قد يكون أي طريقة لإنشاء * .lnk إلى ملف * .exe آخر. - alfasin
alfasin أضفت (.ink file)، حيث كان هناك بعض الارتباك. راجعت السؤال ليعكس تعليق شانتانو. في حين أنك توفر طريقة لعمل "اختصارات" ، إلا أنها لا تجيب على هذا السؤال بالتحديد. - iglvzx
استخدم التالي: powershell "$ s = (New-Object -COM WScript.Shell) .CreateShortcut ('٪ userprofile٪ \ Desktop \ shortcut.lnk')؛ $ s.TargetPath = 'C: \ Windows \'؛ $ s .Save () "من الواضح ، استبدال" '٪ userprofile٪ \ Desktop \ shortcut.lnk "و" C: \ Windows \ "بمسار الاختصار ومسار الهدف ، على التوالي. - cowlinator
cowlinator كما كتبته ، لا يعمل اقتراحك. - Ploni


الأجوبة:


هناك بعض المعلومات المفيدة جدا على هذا الموقع: 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

يؤدي تشغيل البرنامج النصي أعلاه إلى اختصار جديد على سطح المكتب الخاص بي:
Resulting shortcut

إليك مقتطف أكثر اكتمالًا من مساهم مجهول (تم تحديثه باستخدام إصلاح ثانوي):

@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

46
2018-02-20 20:06



ذات صلة: MSDN ، شل الروابط - iglvzx
هذا يعمل بشكل جيد للاختصار إلى ملف. ومع ذلك ، أواجه مشكلة غريبة باستخدامه للاختصار إلى مجلد ، عندما يحتوي متغير متغير Esc_LinkTarget على متغير بيئة يحاول الحصول على المجلد الأصل. (شيء مثل٪ CD٪ \ .. لا يعمل ، لكن٪ CD٪ يعمل). يصبح نوع الهدف الاختصار "ملف" بدلاً من "مجلد" - Edmund
Edmund مشكلة مثيرة للاهتمام. ليس لدي وقت للنظر في الأمر ، لكنني أعتقد أن الخط المائل يمكن أن يحدث فرقًا. - Der Hochstapler
ملاحظة: إذا كنت تستخدم SET Esc_LinkTarget=%0 ثم عليك إزالة " من عند echo oLink.TargetPath = oWS.ExpandEnvironmentStrings^(!Esc_LinkTarget!^) - Black


هنا حل مشابه باستخدام powershell (أعلم ، ربما يمكنك إعادة كتابة ملف دفعتك بالكامل في PS ، ولكن إذا كنت ترغب فقط في الحصول على 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()"

قد تضطر إلى تحديد المسار إلى 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} 

18
2017-11-06 18:05



تريكس: إذا كنت تعتقد أن لديك طريقة أفضل للقيام بذلك، مجرد نشر كجواب جديد (ربط لهذا واحد ، إذا كان ذلك مناسبا). - Scott


بالإضافة إلى shortcut.exe ، يمكنك أيضًا استخدام إصدار سطر الأوامر من NirCmd لإنشاء اختصار. http://nircmd.nirsoft.net/shortcut.html


16
2017-09-30 23:24



أنا أوصي تقريبا كل شىء من NirSoft ، انها مجموعة أدوات المهوس النهائية - That Brazilian Guy


ماذا عن استخدام الأمر mklink؟ C: \ ويندوز \ 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.

9
2018-04-24 16:26



فكرة جيدة ، لكن يبدو أن symlinks تتصرف بطريقة مختلفة قليلاً عن الاختصارات. إذا قمت بإنشاء اختصار إلى حل Visual Studio ، فسيؤدي ذلك إلى فتح جميع المشروعات ذات المسار نسبيًا بشكل صحيح. ومع ذلك ، إذا قمت بفتح نفس الحل عبر ارتباط رمزي ، فإن دليل العمل هو المسار الذي يوجد به الارتباط ، وليس المسار الذي يشير إليه. - Walter Stabosz


بعد كل المناقشات التي أجريناها هنا ، هذا هو الحل المقترح: تحميل: 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)


7
2018-02-20 18:42



هذا ليس اختصار إنه مجرد ملف دفعي يستدعي برنامجًا محددًا. - Keith Thompson
الاختصار هو شيء تقوم بتشغيله من Windows ، حيث أنه يستخدم CMD في العنوان ووضع علامة "سطر الأوامر" افترض أنه يريد تشغيلها من CMD. ملف دفعي هو مكافئ "اختصار" Windows عند تشغيل في CMD (dos like) env. - alfasin
منذ وضع "الاختصار (ملف .lnk)" في نص السؤال ، افترضت أنه يريد إنشاء اختصار فعلي. - Keith Thompson
آسف على الوضوح أردت أن يكون لديك رمز على سطح المكتب الخاص بي الذي قمت به في كمد من شأنه أن يكون اختصار لملف إكس - Shantanu
الآن بعد أن فهمت في النهاية (مفككة بطيئة - ماذا يمكنك أن تفعل ...) لقد غيرت إجابتي. آمل أن يساعد! - alfasin


هذا البرنامج المجاني له وظيفة مطلوبة 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 Calculator"


0
2018-04-12 19:14





أعلم أن هذا الموضوع قديم ولكني أردت توفير الحل البسيط الذي كان يعمل بالنسبة لي.

لقد قمت بنسخ ملف .ico لأول مرة إلى محرك الأقراص C: ثم قمت بإنشاء الاختصار على سطح المكتب الخاص بي وقمت بتعيين الرمز إلى ملف ico على محرك الأقراص C: ثم قمت بنسخ كل من .ico والاختصار إلى مشاركة شبكة يمكن للمستخدمين الوصول إليها. مرة واحدة هناك كتبت الملف الدفعي التالي لنسخ منظمة البن الدولية و. url للمستخدمين ويندوز 7 سطح المكتب. يؤدي هذا إلى إنشاء الاختصار على جميع أجهزة سطح المكتب للمستخدمين ويحفظ ملف الرمز الذي أقوم بتعيينه عند إنشاء الاختصار. آمل أن يساعد هذا شخصًا ما.

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

0
2017-07-21 15:01



إذا كان هذا هو أسلوب أخذ ، فمن الأفضل إنشاء الاختصار الفعلي (.lnk) الذي يضم رمز فيه. يمكن نسخ هذا الاختصار في كل مكان. - LPChip