كيف يمكنني تمرير وسيطات سطر الأوامر عبر جمعية الملفات في Vista 64؟

StackOverflow https://stackoverflow.com/questions/444388

سؤال

كيف يمكن للوسائط الخاصة بتمرير سطر الأوامر عبر جمعية الملفات في Vista 64؟

لقد قمت مؤخرًا ببناء جهاز كمبيوتر يقوم بتشغيل Vista Ultimate 64 بت. لقد لاحظت أن العديد من البرامج النصية Perl التي قمت بنقلها فشلت بسبب عدم تمرير وسيطات سطر الأوامر. كاختبار بسيط ، كتبت ما يلي (foo.pl):

#!/usr/bin/perl -w
use strict;
my $num_args = $#ARGV + 1;
print "${num_args} arguments read\n";
print "$^X\n" # to see what was being used

تشغيل "foo.pl 1 2 3" غير مرغوب فيه:

0 arguments read
C:\strawberry\perl\bin\perl.exe

تشغيل "Perl foo.pl 1 2 3" من المتوقع أن يكون ذلك:

3 arguments read
C:\strawberry\perl\bin\perl.exe

على جهاز كمبيوتر Windows XP القديم ، أعاد كلا الدعوات 3 وسيطات. لقد قمت بتوثيق المزيد من بلدي هنا (Win32.perl.org Wiki Talk) ، لكنني لم أجد حلاً يعمل بعد.

لقد جربت أيضًا ActivePerl-5.10.0.1004-MSWIN32-X64-287188.MSI دون جدوى.

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

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

المحلول

لقد جربت للتو ActivePerl-5.10.0.1004-MSWIN32-X64-287188.MSI على Vista 64 Ultimate وعملت.

F:\prog\perl>foo.pl 1 2 3
3 arguments read
C:\Perl64\bin\perl.exe

هذا يعني ديفيو على حق: يجب أن تكون قضية "جمعية الملفات" ؛

على مستكشف ، انقر بزر الماوس الأيمن على ملف .pl الخاص بك واطلب "Open with": استخدم "مترجم سطر أوامر Perl" وسيعمل (وتحديد "استخدم هذا البرنامج دائمًا لفتح هذا النوع من الملفات").

بالنسبة لي ، فإن "مدير ملحق ملفات Vista قد أزال القدرة على تمرير الوسائط إلى وظائف" يبدو خطأ ...


أرى:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Perl\shell\Open\command]
@="\"C:\\Perl64\\bin\\perl.exe\" \"%1\" %*"

بمعنى أنه إذا لم يضع التثبيت هذا النوع من القيمة في السجل الخاص بك ، فذلك بسبب:

  • لم تحدد الرابطة أثناء إعداد ActivePerl-5.10.0.1004-MSWIN32-X64-287188.MSI
  • أو أن حسابك ليس لديه امتياز كافٍ لكتابة أي شيء في السجل.

ملحوظة:

  • يبدو أن مدير الإرشاد العادي في Vista لا يمرر (بمعنى \"C:\\Perl64\\bin\\perl.exe\" \"%1\" بدون ال %* جدال)
  • إضافة السجل ضرورية كما وثق من قبل SO

نصائح أخرى

لا أعرف عن Vista و 64bits ، ولكن تحت الإصدارات "الكلاسيكية" من Windows ، يمكنك تحرير السجل:

HKEY_CLASSES_ROOT\.pl 

يحتوي على سلسلة افتراضية "بيرل"

HKEY_CLASSES_ROOT\Perl\shell\open\command 

يحتوي على السلسلة الافتراضية:

"C:\path-to\Perl\bin\perl.exe" "%1" %*

حيث ٪* هو ماكرو لجميع المعلمات التالية. ربما ٪* مفقودة.

قام مدير ملحق ملفات Vista بإزالة القدرة على نقل الوسائط إلى البرامج. يجب عليك تحرير السجل يدويًا مثل Devio (أو استخدام برنامج آخر لتحرير ملحقات الملفات).

من المثير للاهتمام أيضًا أن تعرف للمبتدئين بيرل هو ذلك Argv حساس للحالة ... ما عليك سوى قضاء ساعة في محاولة لمعرفة سبب عدم تمرير معلمات سطر الأوامر الخاص بي ، وقد استخدمت Argv [0] بدلاً من Argv [0] ...

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