2009-01-14 12 views
5

Vista 64 में फ़ाइल एसोसिएशन के माध्यम से कोई कमांड लाइन तर्क कैसे पास कर सकता है?Vista 64 में फ़ाइल एसोसिएशन के माध्यम से मैं कमांड लाइन तर्क कैसे पास कर सकता हूं?

मैंने हाल ही में एक पीसी Vista Vista Ultimate 64-bit चलाया है। मैंने देखा कि कई पर्ल स्क्रिप्ट्स जिन्हें मैंने स्थानांतरित किया था, कमांड लाइन तर्कों को पारित नहीं किया गया था।

#!/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" undesirably झुकेंगे: एक साधारण परीक्षण के रूप में, मैं निम्नलिखित (foo.pl) ने लिखा है

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

चल रहा है "पर्ल foo.pl 1 2 3 "अपेक्षित रूप से उपज:

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

मेरे पुराने विंडोज एक्सपी पीसी पर, दोनों आमंत्रणों ने 3 तर्क लौटाए। मैंने यहां अपने अधिक स्लेथिंग (win32.perl.org wiki talk) को दस्तावेज किया है, लेकिन मुझे अभी तक कोई समाधान नहीं मिला है जो काम करता है।

मैंने ActivePerl-5.10.0.1004-MSWin32-x64-287188.msi को भी कोई फायदा नहीं हुआ है।

किसी भी मदद की सराहना की जाएगी। यह मुझे लड़ाकू चला रहा है।

उत्तर

9

मैंने अभी अपने Vista 64 अल्टीमेट पर ActivePerl-5.10.0.1004-MSWin32-x64-287188.msi की कोशिश की और यह काम किया।

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

devio is right इसका मतलब है कि: यह एक "फ़ाइल संघ" मुद्दा होना चाहिए;

एक एक्सप्लोरर पर, अपनी .pl फ़ाइल पर राइट-क्लिक करें और "इसके साथ खोलें" पूछें: "पर्ल कमांड लाइन दुभाषिया" का उपयोग करें और यह काम करेगा (और "इस प्रकार की फ़ाइल को खोलने के लिए हमेशा इस प्रोग्राम का उपयोग करें" चुनें)।

मेरे लिए, "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\" अर्थ) तर्क पास नहीं
  • रजिस्ट्री अलावा आवश्यक है as documented by the SO
+0

मैंने अनइंस्टॉल किया और यह सुनिश्चित किया कि एसोसिएशन का चयन किया गया था (डिफ़ॉल्ट) और मैं हूं एक व्यवस्थापक। हालांकि, जब मैंने इसे कोड कोड को कॉपी और पेस्ट करके इसे आयात किया और इसे निष्पादित करके आयात किया, तो सबकुछ काम करता था। धन्यवाद! (अब यह देखने के लिए कि क्या यह स्ट्रॉबेरी पर्ल के लिए काम करता है) – vlee

+0

एक्सटेंशन मैनेजर है एक विशिष्ट कार्यक्रम जो आता है ... मैं इसका सटीक नाम भूल जाता हूं, लेकिन यह WinXP के एक्सटेंशन संपादक जैसे प्रोग्राम को कॉल करने वाले कमांड लाइन को संशोधित करने का विकल्प देने के बजाय आपको केवल एक प्रोग्राम चुनने की अनुमति देता है। – Powerlord

+0

@ आर। Bemrose: ठीक है, मैं अब आपके जवाब को बेहतर समझता हूँ। मैं कल उसको जांचने की कोशिश करूंगा। – VonC

7

Vista और 64bits के बारे में पता नहीं है, लेकिन Windows के "क्लासिक" संस्करण के तहत आप रजिस्ट्री को संपादित कर सकते हैं:

HKEY_CLASSES_ROOT\.pl 

डिफ़ॉल्ट स्ट्रिंग "पर्ल"

HKEY_CLASSES_ROOT\Perl\shell\open\command 

डिफ़ॉल्ट होता है स्ट्रिंग:

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

जहां% * पहले के बाद सभी पैरामीटर के लिए एक मैक्रो है। शायद% * गायब है।

+0

मुझे केवल निम्नलिखित HKEY_CLASSES_ROOT \ .pl \ Perl \ (डिफ़ॉल्ट) = (मान सेट नहीं किया गया है) HKEY_CLASSES_ROOT \ .pl \ Perl \ ShellNew \ (डिफ़ॉल्ट) = (मान सेट नहीं है) मैंने% में * वाक्यविन्यास खोजा win32.perl.org sleuthing। Vista "assoc" और "ftype" फ़ंक्शंस का उपयोग करता है, जिन्हें मैंने पहले से ही कोई फायदा नहीं हुआ है :( – vlee

+0

वास्तविक आदेश HKEY_CLASSES_ROOT \ Perl \ shell \ Open \ command में है, – VonC

+0

से नीचे मेरा उत्तर देखें क्योंकि कमांड लाइन पेर्ल दुभाषिया पाती है जब आप एक .pl फ़ाइल शुरू करते हैं, तो एसोसिएशन * कहीं * होना चाहिए। "perl.exe" के लिए रजिस्ट्री खोजें, और देखें कि आप इस जानकारी को लागू कर सकते हैं – devio

2

Vista के फ़ाइल एक्सटेंशन प्रबंधक ने कार्यक्रमों के लिए तर्क पारित करने की क्षमता को हटा दिया। आपको रजिस्ट्री मैन्युअल रूप से डेवियो उल्लेखों को संपादित करना होगा (या फ़ाइल एक्सटेंशन को संपादित करने के लिए किसी अन्य प्रोग्राम का उपयोग करें)।

0

पर्ल शुरुआत के लिए भी जानना दिलचस्प है कि एआरजीवी केस-संवेदी है ... यह पता लगाने की कोशिश कर रहा है कि मेरे कमांड लाइन पैरामीटर क्यों पास नहीं हुए हैं, और यह सिर्फ इतना है कि मैंने ARGV [0] के बजाय argv [0] का उपयोग किया था ...

+1

सभी पर्ल चर नामों के मामले संवेदनशील हैं। निश्चित रूप से यह सबसे प्रोग्रामिंग भाषाओं में मामला (!) है? –

+0

मुझे लगता है कि मुझे अभी छोटे अक्षरों (जावा देखें) के साथ वर्तनी वाले argv और argc होने के लिए उपयोग किया गया था, इसलिए मैंने उदाहरणों में वर्तनी पर ध्यान नहीं दिया ... – TheEye