سؤال

مثال:لديك طريق مختصر s ل SomeProgram في الدليل الحالي.

في cmd.exe, ، يمكنك كتابة s وسوف يطلق البرنامج.

في PowerShell، الكتابة s يعطي:

The term 's' is not recognized as a cmdlet, function, operable program, or script file. Verify the term and try again.

إذا كتبت s.lnk أو SomeProgram, ، فهو يقوم بتشغيل البرنامج بشكل جيد.

كيف يمكنني تكوين PowerShell لتنفيذ الاختصارات مثل البرامج تمامًا؟

هل كانت مفيدة؟

المحلول

في نظام التشغيل Vista الخاص بي، لن تؤدي الكتابة S إلى تشغيل ملف lnk إلا إذا قمت بتعيين متغير البيئة PATHEXT مع .lnk في القائمة.عندما أفعل.سوف يعمل S في cmd.exe ويجب أن أفعل .\S في بوويرشيل.

نصائح أخرى

يمكنك أيضًا استدعاء اختصار باستخدام الأمر cmdlet "استدعاء العنصر".لذلك على سبيل المثال، إذا أردت تشغيل "internet explorer.lnk" فيمكنك كتابة الأمر التالي:

invoke-item 'Internet Explorer.lnk'

أو يمكنك أيضًا استخدام الاسم المستعار

ii 'internet explorer.lnk'

شيء رائع آخر هو أنه يمكنك القيام بـ "استدعاء العنصر t.txt" وسيفتح تلقائيًا مهما كان المعالج الافتراضي لملفات *.txt، مثل المفكرة.

ملحوظة إذا كنت تريد تنفيذ تطبيق، app.exe، في الدليل الحالي، فيجب عليك تحديد المسار، النسبي أو المطلق، للتنفيذ.".\app.exe" هو ما ستحتاج إلى كتابته لتنفيذ التطبيق.

بعد الإضافة ;.LNK إلى نهاية بلدي PATHEXT متغير البيئة، يمكنني الآن تنفيذ الاختصارات حتى بدون ما سبق ./ الرموز.(شكرا بروسيتك!)

لقد ألهمني أيضًا اقتراح ستيفن بإنشاء برنامج نصي صغير يقوم تلقائيًا بإنشاء أسماء مستعارة لجميع الاختصارات الموجودة في ملفي PATH (على الرغم من أنني أخطط للالتزام بالحل الأبسط؛).

$env:path.Split( ';' ) | 
  Get-ChildItem -filter *.lnk | 
  select @{ Name='Path'; Expression={ $_.FullName } }, 
         @{ Name='Name'; Expression={ [IO.Path]::GetFileNameWithoutExtension( $_.Name ) } } | 
  where { -not (Get-Alias $_.Name -ea 0) } | 
  foreach { Set-Alias $_.Name $_.Path }

لا أعتقد أنك تستطيع ذلك.قد يكون من الأفضل استخدام الأسماء المستعارة للأوامر شائعة الاستخدام في البرنامج النصي الذي تستدعيه من البرنامج النصي لملفك الشخصي.

مثال -

مجموعة الاسم المستعار np c:\windows otepad.exe

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

أولاً، الاختصار ليس "s" بل "s.lnk".على سبيل المثاللا يمكنك فتح ملف نصي (على سبيل المثال باستخدام المفكرة) عن طريق كتابة "t" عندما يكون الاسم "t.txt" :) يقول تكنيت

يحدد متغير بيئة Pathext قائمة ملحقات الملفات التي تم فحصها بواسطة Windows NT عند البحث عن ملف قابل للتنفيذ.القيمة الافتراضية لـ PATHEXT هي .COM;.EXE;.BAT;.CMD

يمكنك استخدام مصدر النقطة كما هو موضح من قبل الآخرين هنا، أو يمكنك أيضًا استخدام حرف الاستدعاء "&".هذا يعني أن PS يعامل السلسلة الخاصة بك على أنها شيء يجب تنفيذه وليس مجرد نص.قد يكون هذا أكثر أهمية في البرنامج النصي بالرغم من ذلك.

أود أن أضيف أنه يجب عليك تمرير أي معلمات خارج علامات الاقتباس (هذا ما قمت به من قبل) لاحظ أن "-r" ليس موجودًا في السلسلة المقتبسة، فقط ملف exe.

& "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe" -r | out-null

يمكنك دائمًا استخدام إكمال علامة التبويب لكتابة "s[TAB]" والضغط على ENTER وسيتم تنفيذ ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top