मैं निम्नलिखित परिदृश्य के साथ अपनी आवश्यकता व्यक्त कर सकता हूं: एक ऐसा फ़ंक्शन लिखें जो मूल आदेश के रूप में चलाने के लिए स्ट्रिंग को स्वीकार करता है।आप स्ट्रिंग से मनमाने ढंग से देशी कमांड कैसे निष्पादित करते हैं?
यह एक विचार से बहुत दूर नहीं आया है: यदि आप कंपनी में कहीं और अन्य कमांड लाइन उपयोगिताओं के साथ इंटरफेसिंग कर रहे हैं जो आपको वर्बैटिम चलाने के लिए एक कमांड प्रदान करता है। चूंकि आप कमांड को नियंत्रित नहीं करते हैं, तो आपको इनपुट इनपुट के रूप में किसी वैध कमांड को स्वीकार करने की आवश्यकता है। इन मुख्य हिचकी मैं आसानी से दूर नहीं कर पाए थे हैं:
आदेश उस में एक जगह के साथ एक रास्ते में एक कार्यक्रम में रहने वाले को अंजाम दे सकता है:
$command = '"C:\Program Files\TheProg\Runit.exe" Hello';
- मापदंडों
आदेश हो सकता है
$command = 'echo "hello world!"';
आदेश हो सकता है दोनों सिंगल और डबल टिक:
उन में रिक्त स्थान के साथ$command = "echo `"it`'s`"";
वहाँ इस को पूरा करने के किसी भी साफ रास्ता नहीं है? मैं केवल भव्य और बदसूरत कामकाज तैयार करने में सक्षम हूं, लेकिन एक पटकथा भाषा के लिए मुझे लगता है कि यह मृत सरल होना चाहिए।
एलियासिंग महान है। याद रखें, अगर आप किसी अन्य मशीन पर जाते हैं या उस स्क्रिप्ट को किसी और को भेजते हैं कि उपनाम शायद सेटअप नहीं किया जाएगा। PowerShell फ़ंक्शंस के पूर्ण नामों को पसंद करें। –
@ डॉउग: अधिकांश समय मैं ऐसा करता हूं या अंतर्निर्मित उपनामों का उपयोग करता हूं (विशेष रूप से कमांडलाइन पर संक्षिप्तता के लिए)। 'Eval' चीजें आधा मजाक कर रही हैं क्योंकि इसे कई अन्य स्क्रिप्टिंग भाषाओं में कहा जाता है, और यह पहला प्रश्न नहीं है जिसे मैंने देखा है जहां किसी को' invoke-expression 'के बारे में कोई जानकारी नहीं थी। और ओपी का मामला केवल घर की लिपि की तरह लगता है। –
मैंने यह कोशिश की है, लेकिन यह इसके साथ काम नहीं करता है: $ कमांड = '"सी: \ प्रोग्राम फ़ाइलें \ विंडोज मीडिया प्लेयर \ mplayer2.exe" "एच: \ ऑडियो \ संगीत \ स्टीवी वंडर \ स्टीवी वंडर - अंधविश्वास। mp3 "' –