एक सरल .cmd फ़ाइल को मेरे .ps1 फ़ाइल के साथ मेरे सबफ़ोल्डर में एक ही नाम के साथ रखें, इसलिए, उदाहरण के लिए, "foobar" नामक स्क्रिप्ट में "foobar.ps1" और "foobar.cmd" होगी। तो .ps1 चलाने के लिए, मुझे केवल इतना करना है कि एक्सप्लोरर से .cmd फ़ाइल क्लिक करें या कमांड प्रॉम्प्ट से .cmd चलाएँ। मैं एक ही आधार नाम का उपयोग करता हूं क्योंकि .cmd फ़ाइल अपने नाम का उपयोग करके स्वचालित रूप से .ps1 खोजेगी।
::====================================================================
:: Powershell script launcher
::=====================================================================
:MAIN
@echo off
for /f "tokens=*" %%p in ("%~p0") do set SCRIPT_PATH=%%p
pushd "%SCRIPT_PATH%"
powershell.exe -sta -c "& {.\%~n0.ps1 %*}"
popd
set SCRIPT_PATH=
pause
Pushd / popd आपको उन कमांड प्रांप्ट से .cmd फ़ाइल लॉन्च करने की अनुमति देता है, जहां स्क्रिप्ट स्थित हैं, विशेष निर्देशिका में बदले बिना। यह स्क्रिप्ट निर्देशिका में तब बदल जाएगा जब पूरा वापस मूल निर्देशिका में चला जाएगा।
यदि स्क्रिप्ट समाप्त होने पर आप कमांड विंडो को गायब करना चाहते हैं तो आप विराम भी ले सकते हैं।
यदि मेरी .ps1 स्क्रिप्ट में पैरामीटर हैं, तो मैं उनके लिए .NET फॉर्म का उपयोग करके GUI संकेतों के साथ संकेत देता हूं, लेकिन यदि मैं इसके बजाय उन्हें पास करना चाहता हूं, तो स्क्रिप्ट को स्वीकार करने के लिए स्क्रिप्ट को लचीला बनाता है। इस तरह से मैं इसे एक्सप्लोरर से केवल डबल-क्लिक कर सकता हूं और मापदंडों का विवरण नहीं जानना है क्योंकि यह मुझसे पूछेगा कि मुझे क्या चाहिए, सूची बॉक्स या अन्य रूपों के साथ।