सिर्फ "पॉवर्सशेल" के बजाय "सीएमडी / सी पॉवर्सशेल" का उपयोग क्यों करें?


25

मैंने इस प्रश्न में दिए गए निर्देशों के अनुसार रजिस्ट्री का उपयोग करके अपना पहला संदर्भ मेनू जोड़ा है (मुझे बताएं)।

मैंने मूल रूप से इसे उस कमांड के रूप में उपयोग किया था जिसे यह निष्पादित करता है, अर्थात "कमांड" कुंजी का मान:

Cmd /C Powershell  "imageSeqView --% \"%1\""

ImageSeqViewमेरे पॉवरशेल फ़ंक्शन का नाम है, मैं इसे अपने पॉवरशेल प्रोफ़ाइल में आयात करता हूं। यह ठीक काम करता है, लेकिन मैं सोच रहा हूं: फ़ंक्शन को निष्पादित करने के cmdलिए खोलने Powershellका उपयोग क्यों करें ? क्या यह सिर्फ करना आसान नहीं होगा

Powershell  "imageSeqView --% \"%1\""

यह आदेश ठीक काम करने के लिए लगता है, लेकिन जब से यह उपयोग करने के लिए विहित लगता है cmdमैं सोच रहा हूं कि क्या यह चुपके से पिल्लों या कुछ और को मार रहा है?

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


2
लिंक किए गए प्रश्न उपयोग में कोई भी उत्तर नहीं है cmd /c... cmd /kबल्कि यह अलग है कि यह कमांड पूरा होने के बाद खिड़की को खुला छोड़ देता है । संभवतः पूछने वाले ने इसे इस तरह से किया ताकि वे डिबगिंग उद्देश्यों के लिए आउटपुट देख सकें।
बॉब

1
यह इतना संशोधक नहीं है जिसके बारे में मैं सोच रहा हूं, यह cmdमेरे शोध से सर्वव्यापी प्रतीत होता है।
stib

क्या आप एक संदर्भ प्रदान कर सकते हैं जो वास्तव में cmd /c powershellविशेष रूप से अनुशंसा करता है? फिर, आपके द्वारा जोड़ा गया कोई ऐसी सिफारिश नहीं करता है।
बॉब

यहाँ स्वीकृत उत्तर: social.technet.microsoft.com/Forums/scriptcenter/en-US/…
stib

3
एक अनुमान के अनुसार, यह शायद ज्यादातर माल की खेती है। ऐसे कुछ मामले हैं जहां यह वांछित हो सकता है (अर्थात्, जब आप पाइपिंग जैसे cmd कंस्ट्रक्शन का उपयोग करना चाहते हैं), लेकिन वे वास्तव में तब लागू नहीं होते हैं जब आप इसे पॉवरशेल में वैसे ही कर सकते हैं। MSDN दस्तावेज़ीकरण में ऐसा कुछ भी नहीं है जो यह सुझाव देता है कि यह आवश्यक है, हालांकि फ़ाइल संघों के आसपास के डॉक्स बल्कि विरल हैं।
बॉब

जवाबों:


29

ऐसा करने का कोई अच्छा कारण नहीं है। वास्तव में, ऐसा होने वाला एकमात्र वास्तविक प्रभाव चीजों को धीमा करना है।

लोग सोच सकते हैं कि ऐसा करने का एक अच्छा कारण है। CMD का उपयोग करने के निम्नलिखित प्रभाव होते हैं जो आमतौर पर कुछ मामलों में अच्छे हो सकते हैं:

  • आंतरिक आदेशों को सक्षम करता है, जैसे " DIR"
  • वातावरण चर, जैसे PATH चर सेट करता है

हालांकि, इस मामले में, उन लाभों में से कोई भी प्राप्त नहीं हुआ है। आइए इन दोनों परिदृश्यों को देखें:

इसलिए, कुछ मामलों में, " CMD /C" का उपयोग करते समय एक समय हो सकता है। उदाहरण के लिए, यदि मैं बाहरी कमांड PSEXEC(SysInternals से डाउनलोड किया गया) का उपयोग करता हूं , और DIRदूरस्थ कंप्यूटर पर " " चलाने की कोशिश करता हूं , तो विंडोज " DIR" कमांड चलाने की कोशिश करेगा । विंडोज उस कमांड को चलाने में विफल हो जाएगा क्योंकि कोई " DIR.EXE", " DIR.BAT", या " DIR" फाइल दूसरे समर्थित एक्सटेंशन के साथ समाप्त नहीं होती है। (समर्थित एक्सटेंशन को " ECHO %PATHEXT%" चलाकर देखा जा सकता है ।)

हालाँकि, इस परिदृश्य में, यदि मैं " CMD /C DIR" चलाने की कोशिश करता हूं , तो वह काम करेगा, क्योंकि विंडोज " CMD" नामक एक निष्पादन योग्य के लिए देखेगा , और वह ढूंढेगा, और फिर CMDअंत में सफलतापूर्वक " DIR" कमांड को चलाएगा जो एक आंतरिक है " CMD" कमांड का हिस्सा ।

इस मामले में, आप बस powershell" CMD /C powershell" के रूप में आसानी से चला सकते हैं , इसलिए आपको अनावश्यक " CMD /C" से कोई लाभ नहीं होगा । टाइपिंग के अतिरिक्त चरण के माध्यम से जाने का जो एकमात्र लाभ मुझे दिखाई दे रहा है वह " CMD /C" एक उदाहरण प्रदान करना है जो उपयोगी होगा यदि कोई व्यक्ति कमांड लाइन " DIR" या " COPY" चलाने के लिए एक उदाहरण को संशोधित करने का प्रयास करता है । अधिक लचीला उदाहरण होना कुछ लोगों के लिए उपयोगी हो सकता है। यह वास्तव में जरूरी नहीं है जब लोग जानते हैं कि वे क्या कर रहे हैं।

जैसा कि मैंने प्रदान की दूसरी बुलेट बिंदु के लिए, जो कि पर्यावरण चर को सेट करना है, यह भी कुछ ऐसा है जो आप इस विशेष मामले में सक्रिय रूप से नहीं कर रहे हैं। हो सकता है कि कुछ लोगों को लगता है कि वे पैठ के पर्यावरण चर को सेट करके मामलों की मदद कर रहे हैं। हालाँकि, जब आप सीधे कमांड चलाते हैं (उदाहरण के लिए, प्रारंभ मेनू के "रन" मेनू विकल्प से), विंडोज ऑपरेटिंग सिस्टम कुछ अतिरिक्त स्थानों में कमांड की तलाश कर सकता है। उदाहरण के लिए, Windows XP / नए में आप चला सकते हैं:

reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths"

यदि आप जिस कमांड को चलाना चाहते हैं, वह "ऐप पाथ्स" के तहत सूचीबद्ध है, तो विंडोज प्रोग्राम को पा सकता है भले ही वह रास्ते में न हो। इसलिए, विंडोज़ को और भी अधिक खोजने की संभावना है कि सीएमडी पाथ में क्या सीएमडी का उपयोग करेगा।

एक संभावित लाभ यह है कि अगर आप चाहते थे कि CMD को चलाया जाए ताकि आप% USERPROFILE% या% LOGONSERVER% या% TEMP% /% TMP% जैसे पर्यावरण चर का उल्लेख कर सकें, लेकिन जब से आप ऐसा नहीं कर रहे हैं, आप नहीं कर रहे हैं " CMD /C" चलाने की आवश्यकता है ।

तो, आपके विशेष मामले के लिए: ऐसा करने का कोई अच्छा कारण नहीं है। आप जो प्रभाव प्राप्त कर रहे हैं वह आपके कंप्यूटर को अधिक काम कर रहा है, प्रक्रिया को धीमा कर रहा है, और अधिक मेमोरी का उपयोग कर रहा है (यह सब आप आधुनिक उपकरणों पर नगण्य मात्रा में कर रहे हैं)।


बॉब जो सलाह दे रहा था, उससे मैं पूरी तरह सहमत हूं। बॉब आपको एक सही रास्ते पर ले जा रहा था। जैसा कि मैंने चीजों को पढ़ा, हालांकि, मुझे लगा कि कुछ और जानकारी जल्दी से थोड़ी और स्पष्टता प्रदान करने में मदद कर सकती हैं।
TOOGAM

2
ftr - एक अलग प्राथमिकता के साथ एक प्रक्रिया शुरू करना एक अच्छा उपयोग मामला है cmd /c। कुछ इस तरह cmd /c start /low Notepad.exe
लेवेन केर्सेमेकर्स

अच्छा उत्तर। एक बात जिसका मैंने उल्लेख किया है, वह भी cmd के ऑटोरन को चलाता है , लेकिन यह आमतौर पर सेट नहीं होता है, और जब यह सेट होता है तब भी शायद यह फ़ाइल एसोसिएशन में वांछित नहीं है । और लेवेन प्राथमिकता के साथ एक अच्छा बिंदु बनाता है, हालांकि फिर से मुझे लगता है कि फ़ाइल एसोसिएशन के लिए यह थोड़ा अजीब है।
बॉब

1
cmd स्वयं पर्यावरण चर सेट नहीं करता है। वातावरण मूल प्रक्रिया से विरासत में मिला है, बीच में cmd ​​जोड़ने से उस बारे में कुछ भी नहीं बदलता है। App पथ केवल ShellExecute के लिए उपयोग किया जाता है, जहाँ तक मुझे पता है, CreateProcess के लिए नहीं, इसलिए अधिकांश परिस्थितियों में (विशेषकर गोले में) वे लागू नहीं होंगे (आप इसे स्वयं आज़मा सकते हैं, pbrushएक App पथ के लिए mspaintऔर में काम नहीं करेगा बहुत से स्थान)।
जॉय

@ जॉय शायद यह कहने के लिए अधिक सही है कि यह चर का विस्तार करता है ... लेकिन, इसके बारे में सोचें, यदि आप उपयोग REG_EXPAND_SZकरते हैं तो आप पर्यावरण चर का विस्तार कर सकते हैं (उसी का उपयोग करके %syntax%) बिना सीएमडी को शामिल किए। फ़ाइल संघों में उपयोग की जाने वाली क्रियाओं को इसके माध्यम से लागू किया जाता है ShellExecuteEx, इसलिए ऐप पथ यहां लागू होते हैं।
बॉब

18

क्योंकि इससे रंग निकल जाता है।

यह हो सकता है कि उन्हें लगता है कि लोग नीले रंग की पृष्ठभूमि को विचलित कर रहे हैं।


1
Windows के पास काम नहीं है, लेकिन क्या आप सिर्फ सांत्वना गुणों में पृष्ठभूमि रंग सेट नहीं कर सकते हैं?
रुस्लान

1
Upvoting, मेरे लिए एक प्रतिस्पर्धात्मक उत्तर होने के बावजूद जो कोई कारण नहीं है। क्योंकि, यह एक समझदार कारण है। बहुत बढ़िया। बेशक, कुछ लोगों को लग सकता है कि ब्लैक बॉक्स ब्लू बॉक्स की तुलना में अधिक विचलित करने वाला है। हालाँकि, यह प्राथमिकता का विषय है और लोगों की अलग-अलग प्राथमिकताएँ हो सकती हैं, इसलिए एक अच्छे और सटीक उत्तर के लिए +1। @Rusland: हाँ, लेकिन क्या आप एक त्वरित कार्यक्रम गायब होने से पहले किए गए उस परिवर्तन को प्राप्त करने का प्रबंधन कर सकते हैं? (और, क्या आप जानते हैं कि एक सत्र में किए गए बदलाव अन्य सत्रों को प्रभावित करेंगे। क्या सेटिंग्स सामान्य मामलों और डेस्कटॉप आइकनों जैसे विशिष्ट लोगों के बीच भिन्न
होंगी

मैं इसे कभी नहीं नोटिस करता हूं क्योंकि मैं अपने डिफ़ॉल्ट कंसोल के रूप में कॉनम्यू का उपयोग करता हूं, जिसका अर्थ है कि मुझे हमेशा मेरी अच्छी तरह से कॉन्फ़िगर की गई कंसोल विंडो (ascii कला और कस्टम संकेतों और जलती हुई मशालों के gif के साथ मिलती है। 10 मिनट से भी कम समय में!)
st

1

के साथ cmd powershell, आप मौजूदा शेल, एक्सप्लोरर, को cmd powershell, "imageSeqView ..."को% 1 से cmd के पार्स किए गए मान के साथ आमंत्रित करने के लिए कहते हैं ।

इस मामले में, "powershell"cmd द्वारा या तो एक cmd कमांड, एक exe या cmd की समर्थित स्क्रिप्ट में से एक होने की उम्मीद की जाती है, जैसे बल्ले।

इसके साथ powershell "imageSeqView ...", आप वर्तमान शेल, एक्सप्लोरर से पूछते हैं, powershellपैरामीटर imageSeqView ...1 से पार्स किए गए मान के साथ इसे लागू करने के लिए ।

इस स्थिति में, " imageSeqView" की उम्मीद है कि पॉवरशेल या तो एक cmdlet, एक exe या एक पॉवरशेल स्क्रिप्ट होगी।

बशर्ते कि " imageSeqView" एक शक्तियुक्त कार्य है, 1 तरीका पूरी तरह अनावश्यक है और प्रदर्शन को थोड़ा कम करता है।

कमांड विंडो विकल्पों के लिए, जैसे -NoExit, जैसे पॉवरशेल में समान विकल्प हैं, जो cmd में / K के समान होना चाहिए।

पाइप-लाइनिंग के लिए, एनवी वार्स को इनिशियलाइज़ करते हुए, पॉवरशेल समान रूप से कर सकते हैं।

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