मैं कुछ समय के लिए ड्रैगोज़ समाधान के साथ काम कर रहा हूं और मैं इसे सबसे अच्छा मानता हूं क्योंकि यह आपकी शैल स्क्रिप्ट के अंदर "साइगपाथ-यू" का उपयोग करने की आवश्यकता को खत्म करता है।
तब मैं .sh और .bash फ़ाइलों के लिए ड्रैग & ड्रॉप समर्थन जैसे अतिरिक्त सुविधाएं प्राप्त करना चाहता था। कुछ खोदने के बाद मैंने एक .bat लिखा जो .sh और .bash फ़ाइलों को "बैशस्क्रिप्ट" के रूप में जोड़ता है और विंडोज एक्सप्लोरर ड्रैग & उनके लिए ड्रॉप हैंडलर सक्रिय करता है। मुझे ड्रैग्स कमांड को 1 तर्क (एक शेल स्क्रिप्ट पर गिराए गए आइटम का मार्ग) को संभालने के लिए संपादित करना था।
.bat फ़ाइल मोटे तौर पर इस प्रकार है:
echo Registering .sh and .bash files as "bashscript"...
assoc .sh=bashscript
assoc .bash=bashscript
echo.
echo Setting the run command for the file type "bashscript"...
ftype bashscript=C:\cygwin\bin\bash.exe --login -i -c 'cd "$(dirname "$(cygpath -u "%%1")")"; bash "$(cygpath -u "%%1")" "$(/argshandler.sh "%%2")"'
echo.
echo Activating the drag^&drop capability for "bashscript" files (only 1 dropped item
echo will be passed to the script, multiple items are not supported yet)...
reg add HKEY_CLASSES_ROOT\bashscript\shellex\DropHandler /v "" /t REG_SZ /d "{60254CA5-953B-11CF-8C96-00AA00B8708C}" /f
Cygwin जड़ में "argshandler.sh" स्क्रिप्ट बस वापस पहला तर्क यह प्राप्त करता है और कुछ भी नहीं सब पर अगर वहाँ नहीं किसी भी (हैं cygpaths उदाहरण के लिए यदि आप सिर्फ एक स्क्रिप्ट फ़ाइल पर डबल क्लिक करते हैं):
#!/bin/bash
if [ ! "$1" == "" ]
then
cygpath -u "$1"
fi
यह सब बहुत अच्छी तरह से काम करता है। हालांकि, अभी भी कुछ कमियां है कि अच्छा होगा हल किया जाना हैं:
- Dragos 'कमांड और इसके बारे में मेरी व्युत्पन्न असफल जब यह स्क्रिप्ट को UNC पथ, उदा पर स्थित हैं के लिए आता है \\ myserver \ myshare \ scriptfile.sh
- केवल 1 गिराए गए आइटम को शैल स्क्रिप्ट में पास कर दिया जाएगा।
किसी तरह
, 1-गिरा-मद केवल-मुद्दे से संबंधित, तर्क हैंडलर स्क्रिप्ट को बदलने वापस की तरह
"cygpathed-arg1" "cygpathed-arg2" "cygpathed-arg3"
कुछ देने के लिए और
की तरह कुछ करने के लिए Dragos 'कमांड के सेटर बदलते
...; bash "$(cygpath -u "%%1")" $(/argshandler.sh "%%2" "%%3" ... "%%9")'
(ध्यान दें कि argshandler.sh भाग के चारों ओर "" चला गया है) ठीक से काम नहीं कर रहा है: यदि किसी स्क्रिप्ट पर खींचे गए कुछ आइटमों में उनके पथ में एक खाली होता है, तो कहा गया है कि पथ एकाधिक में विभाजित हो जाएंगे argume रिक्त स्थान पर एनटीएस हालांकि उनमें से प्रत्येक डबल कोट्स में संलग्न है ... अजीब।
क्या कोई कमांड लाइन पेशेवर हैं जो इन मुद्दों में से एक या दोनों को हल करने के लिए महसूस करते हैं?
यदि आपकी स्क्रिप्ट को कंसोल इंटरैक्शन की आवश्यकता नहीं है, तो आप साइगविन के run.exe का उपयोग कर उन्हें पूरी तरह से विंडो रहित चला सकते हैं। बस 'सी: \ cygwin \ bin \ run.exe "bash -li"% 1 "% *' –
पर कमांड को बदलें किसी को भी यह पता है कि विंडोज 7 में ऐसा कैसे करें? "फ़ाइल प्रकार" विकल्प गुम है। – adib
क्या वहां है हास्यास्पद एमएस कंसोल की बजाय सिगविन के कंसोल में इसे लॉन्च करने का एक तरीका है ताकि आप कॉपी और पेस्ट की तरह कुछ कर सकें? –