क्या Sendto फ़ोल्डर में शेल स्क्रिप्ट का उपयोग करना संभव है?


9

मैं SendToफ़ोल्डर से बैश शेल स्क्रिप्ट का उपयोग करना चाहूंगा । जब मैं किसी बैच या शॉर्टकट को शॉर्टकट में डालता हूं, तो SendToयह शेल Send Toसंदर्भ सबमेनू में दिखाई देता है, लेकिन जब शॉर्टकट शेल स्क्रिप्ट पर इंगित होता है तो यह नहीं होता है।

ओएस मैं इस पर परीक्षण कर रहा हूँ Win7 होम प्रीमियम SP1 है। एक्सटेंशन .shजो MinGW के bash.exe के साथ संबद्ध किया गया है।

मेरी शेल स्क्रिप्ट का .shविस्तार है और मैंने एक्सटेंशन को अलग करने की कोशिश की .shहै (मुझे लगता है कि मिनगव ने शुरुआत में इसे सेट किया था, लेकिन यह काम नहीं किया) इस उपयोगिता का उपयोग करके और इसका उपयोग करने के लिए इसे पुनः प्राप्त करने का प्रयास करने का प्रयास किया:

ftype ShellScript=c:\MinGW\msys\1.0\bin\bash.exe -c "'%1' %2"
assoc .sh=ShellScript

एक व्यवस्थापक cmd खोल में। यद्यपि यह कमांड प्रॉम्प्ट और एक्सप्लोरर शेल (डबल क्लिक के माध्यम से) पर काम करता है, यह Send Toमेनू में दिखाई नहीं देगा और यह सीधे स्क्रिप्ट के शीर्ष पर एक फ़ाइल को खींचकर एक पैरामीटर को स्वीकार नहीं करेगा।

क्या किसी को पता है कि मैं यह कैसे करूँगा?


1
क्या एक्सप्लोरर बैश शेल स्क्रिप्ट को चलाता है यदि आप शेल स्क्रिप्ट पर शॉर्टकट को डबल क्लिक करते हैं? क्या शॉर्टकट केवल शेल स्क्रिप्ट के लिए है या शेल स्क्रिप्ट के साथ पैरामीटर के लिए बैश है?
वर्नर हेन्ज

स्क्रिप्ट का फाइल एक्सटेंशन क्या है? क्या आपने उस प्रकार के लिए एक फ़ाइल प्रकार संघ स्थापित किया है? यदि यह मौजूद है तो विंडो धमाके की रेखा को संसाधित नहीं कर सकती है। आप किस bash-for-windows का उपयोग कर रहे हैं?
फ्रैंक थॉमस

@FrankThomas: मैंने आपके द्वारा प्रश्न के लिए मांगी गई अतिरिक्त जानकारी जोड़ी है।
एड्रियन

@WernerHenze: स्क्रिप्ट के लिंक पर किसी फ़ाइल को खींचने का प्रयास क्रॉस के साथ एक लाल वृत्त दिखाई देता है। इसे सीधे स्क्रिप्ट पर डालने की कोशिश करना या तो काम नहीं करता है (कहता है Move to *dir*), इसलिए मैं सोच रहा हूं कि यह किसी कारण से पैरामीटर नहीं ले रहा है, भले ही इसे निष्पादित किया जाता है यदि डबल पर क्लिक किया जाता है। किसी भी विचार क्यों यह ऐसा होगा?
एड्रियन

मुझे वर्नर हेनज़ के दूसरे प्रश्न का उत्तर नहीं मिलता है, इसलिए समान दिशा में: क्या आपने c:\MinGW\msys\1.0\bin\bash.exe -c C:\Path\To\Your\Script.shशॉर्टकट के लिए लक्ष्य के रूप में उपयोग करने की कोशिश की SendTo?
मपी

जवाबों:


4

यह किसी भी स्क्रिप्ट को ड्रैग एंड ड्रॉप कर सकेगा। आप उनमें से एक को SendTo फ़ोल्डर में रख सकते हैं और बाद में इसका उपयोग कर सकते हैं।

रजिस्ट्री निर्यात:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\ShellFile]

[HKEY_CLASSES_ROOT\ShellFile\Shell]

[HKEY_CLASSES_ROOT\ShellFile\Shell\Open]

[HKEY_CLASSES_ROOT\ShellFile\Shell\Open\Command]
@=hex(2):43,00,3a,00,5c,00,70,00,61,00,74,00,68,00,5f,00,65,00,78,00,74,00,5c,\
  00,62,00,61,00,73,00,68,00,2e,00,65,00,78,00,65,00,20,00,2d,00,63,00,20,00,\
  22,00,73,00,6f,00,75,00,72,00,63,00,65,00,20,00,24,00,30,00,3b,00,72,00,65,\
  00,61,00,64,00,22,00,20,00,25,00,31,00,20,00,25,00,2a,00,00,00

[HKEY_CLASSES_ROOT\ShellFile\ShellEx]

[HKEY_CLASSES_ROOT\ShellFile\ShellEx\DropHandler]
@="{86C86720-42A0-1069-A2E8-08002B30309D}"

हेक्स हिस्सा वास्तव में है "C:\cygwin\bin\bash.exe -c "source $0;read" %1 %*"जो निर्यात में एन्कोड हो जाता है।

आप शायद readपरीक्षण के बाद हटाना चाहते हैं , इसलिए आप ऐसी स्क्रिप्ट लिख सकते हैं जो खुली खिड़की को छोड़े बिना सिर्फ एक कार्य करें। यदि आपको एकल स्क्रिप्ट के लिए इसकी आवश्यकता है, तो आप हमेशा इसे अपने अंत को जोड़ सकते हैं।

assoc .ext=ShellFileइस कार्यक्षमता के साथ इच्छित फ़ाइल एक्सटेंशन को लिंक करने के लिए आयात करने के बाद उपयोग करें । इस उदाहरण में ड्रॉपहैंडलर विंडोज एक्सपी और विंडोज 7 (शायद अन्य भी) के लिए काम करता है और मूल रूप से इसका अर्थ है "कमांड को चलाएं, सभी गिराए गए फ़ाइलनामों को तर्क के रूप में"।

echotest.extबुनियादी कार्यक्षमता का परीक्षण करने के लिए इसे स्क्रिप्ट ( ) के रूप में उपयोग करें :

echo $0 $*;

sourceएक और शेल के आह्वान को समाप्त करने और ड्रैग एंड ड्रॉप के बारे में मेरे पक्ष के उत्तर का उपयोग करने के लिए +1 । दुर्भाग्य से यह मुख्य प्रश्न नहीं है, इसलिए दुर्भाग्य से आपको इनाम नहीं मिलेगा। लेकिन धन्यवाद। मैंने सफलता के बिना यह जानने की कोशिश की। (Y)
एड्रियन

यह आपको स्क्रिप्ट के पैरामीटर के साथ bash.exe के लिए लिंक बनाने के बजाय SendTo फ़ोल्डर में सीधे गोले का उपयोग करने की अनुमति देगा। मैं वास्तव में मानता हूं कि यह आपके प्रश्न का उत्तर देता है, जबकि स्वीकृत उत्तर एक समाधान प्रदान करता है। हालांकि बहस करने के लिए नहीं जा रहा है: पी
स्क्वीज़ी

ओह, जानकर अच्छा लगा। धन्यवाद। हम्म, यकीन नहीं है कि तब तक इनाम किसे देना है। :(
एड्रियन

mpy, उसने पहले आपकी समस्या हल की। मैंने अभी यह काम किया, जिज्ञासा से बाहर। इसके अलावा, मैं कभी भी स्क्रिप्ट के लिए SendTo और Drag & Drop का उपयोग करना बंद नहीं कर सकता, इसलिए यह मेरा पुरस्कार होगा!
स्क्वीज़ी

+1 मेरे लिए भी source, यह वास्तव में एक अच्छा बिंदु है। @ एड्रियन: अब आप जानते हैं, एसयू ने आपको बाउंटी को बहुत जल्दी पुरस्कार नहीं दिया। IMHO स्क्वीज़ी का जवाब इनाम का हकदार है, क्योंकि उसका जवाब अधिक सुरुचिपूर्ण है; यदि आप इस बारे में बुरा महसूस करते हैं, ;)तो आप अभी भी मेरे उत्तर को स्वीकार कर सकते हैं (क्योंकि इससे आपकी समस्या हल हो गई है), लेकिन मैं केवल अपटाउन के साथ ही ठीक हो जाऊंगा।
खसखस

4

यहाँ एक bashशेल फ़ंक्शन के लिए SendTo(या ड्रैग एंड ड्रॉप के माध्यम से) एक तर्क कैसे पास किया जाए । एक उदाहरण के रूप में मैंने बिलिन का उपयोग किया echoSendToफ़ोल्डर में अपने लिंक के लिए लक्ष्य निर्धारित करें :

C:\cygwin\bin\bash.exe -c "echo Argument: $0; read"

यहां दिए गए कमांड लाइन के बाद$0 पहले तर्क के लिए खड़ा है) , यानी उस फ़ाइल का पूरा फ़ाइल नाम जिस पर sendto कार्रवाई निष्पादित की गई थी। खिड़की खुली रखें, ताकि आप संदेश पढ़ सकें। (मैंने साइबरविन के साथ इसका परीक्षण किया , लेकिन मुझे लगता है कि मिंगव को भी काम करना चाहिए।)readbashbash

आपके मामले में, लक्ष्य होना चाहिए

c:\MinGW\msys\1.0\bin\bash.exe -c "/path/to/your/script.sh $0; read"

अब आपकी स्क्रिप्ट फ़ाइलनाम को संसाधित कर सकती है। लेकिन ध्यान दें, फ़ाइल नाम को पहले तर्क के रूप में स्क्रिप्ट में पास किया जाता है, इसलिए स्क्रिप्ट के अंदर फ़ाइल नाम को संदर्भित किया जाता है$1


अंतिम, लेकिन कम से कम यहाँ सारांश के रूप में दो स्क्रीनशॉट नहीं हैं:

यहां छवि विवरण दर्ज करें


यहां छवि विवरण दर्ज करें


क) आपने उद्धृत किया man bash:

-c string-C विकल्प मौजूद है, तो स्ट्रिंग से कमांड पढ़े जाते हैं। यदि स्ट्रिंग के बाद तर्क हैं, तो उन्हें $ 0 से शुरू करके, स्थितीय मापदंडों को सौंपा गया है।

यह समझने के लिए कि, निम्न लक्ष्य रेखा का उपयोग करें:

C:\cygwin\bin\bash.exe -c "echo This is $0; read" Foo Bar Baz

यह प्रिंट करेगा This is Foo, जबकि

C:\cygwin\bin\bash.exe -c "echo This is $2; read" Foo Bar Baz

छप जाएगा This is Baz। इसलिए "स्ट्रिंग" प्रेरितों के बीच सब कुछ है, और Foo Bar Bazतर्क हैं।


1
आह, इसका यही मतलब है। अब समझ में आता है। धन्यवाद। जैसे ही एसओ मुझे जाने देंगे, मैं आपको इनाम दूंगा। (कहते हैं कि मैं किसी कारण से 11 घंटे में कर सकते हैं कंधे उचकाने की क्रिया )
एड्रियन

0

यदि Windows .sh फ़ाइल से लिंक करने से इनकार करता है, तो आप शायद .b स्क्रिप्ट का उपयोग करने वाली .bat फ़ाइल का उपयोग करने का प्रयास कर सकते हैं।

यदि वह काम नहीं करता है, तो आप .bat .exe में संकलन करने का प्रयास भी कर सकते हैं।
एक त्वरित Google मिला:

बैच कम्पाइलर
बैट-टू-एक्स


मुझे पता है कि मैं प्रॉक्सी बैट या एक्सई का उपयोग कर सकता हूं। मैं जानना चाहूंगा कि क्या ऐसा बिना प्रॉक्सी के किया जा सकता है।
एड्रियन

0

REG फ़ाइल के इस अपडेट किए गए संस्करण को आज़माएं (ध्यान दें कि मैं 64-बिट विंडोज 7 का उपयोग करता हूं; यदि आपके पास 32-बिट Win7, Vista, या XP है) के System32बजाय इसका उपयोग करें SysWOW64:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\ShellFile]
@="Shell Script"

[HKEY_CLASSES_ROOT\ShellFile\DefaultIcon]
@="C:Windows\\SysWOW64\\imageres.dll,-68"

[HKEY_CLASSES_ROOT\ShellFile\shell]

[HKEY_CLASSES_ROOT\ShellFile\shell\edit]

[HKEY_CLASSES_ROOT\ShellFile\shell\edit\command]
@="C:\\Windows\\SysWOW64\\NOTEPAD.EXE %1"

[HKEY_CLASSES_ROOT\ShellFile\shell\open]
"EditFlags"=hex:00,00,00,00

[HKEY_CLASSES_ROOT\ShellFile\shell\open\command]
@="C:\\MinGW\\msys\\1.0\\bin\\bash.exe -c \"source $0;\" \"%1 %*\""

[HKEY_CLASSES_ROOT\ShellFile\shell\print]

[HKEY_CLASSES_ROOT\ShellFile\shell\print\command]
@="C:\\Windows\\SysWOW64\\NOTEPAD.EXE /p %1"

[HKEY_CLASSES_ROOT\ShellFile\shell\runas]
"HasLUAShield"=""

[HKEY_CLASSES_ROOT\ShellFile\shell\runas\command]
@="C:\\MinGW\\msys\\1.0\\bin\\bash.exe -c \"source $0;\" \"%1 %*\""

[HKEY_CLASSES_ROOT\ShellFile\shell\runasuser]
@="@shell32.dll,-50944"
"Extended"=""
"SuppressionPolicyEx"="{F211AA05-D4DF-4370-A2A0-9F19C09756A7}"

[HKEY_CLASSES_ROOT\ShellFile\shell\runasuser\command]
"DelegatExecute"="{ea72d00e-4960-42fa-ba92-7792a7944c1d}"

[HKEY_CLASSES_ROOT\ShellFile\ShellEx]

[HKEY_CLASSES_ROOT\ShellFile\ShellEx\DropHandler]
@="{86C86720-42A0-1069-A2E8-08002B30309D}"

यह आपकी शेल स्क्रिप्ट को प्रशासक के रूप में चलाने की अनुमति देगा जैसा कि कोई भी .bat फ़ाइल करता है। दूसरे शब्दों में, यह Windows Vista और Windows 7 या 8 का उपयोग करते समय सभी शेल स्क्रिप्ट UAC को संगत बनाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.