मैं उपरोक्त समाधानों के लिए एक टिप्पणी जोड़ना चाहूंगा:
ये सभी वाक्यविन्यास पूरी तरह से अच्छी तरह से काम करते हैं, अगर आपके कमेंट में पैठ है या फिर अगर कमोड SPACES या स्पेशल चार्जर्स के बिना एक cmdpath है।
लेकिन यदि आप किसी फ़ोल्डर में स्थित निष्पादन योग्य कमांड का उपयोग करने का प्रयास करते हैं जिसमें पथ में विशेष वर्ण हैं तो आपको अपने कमांड पथ को दोहरे उद्धरण चिह्नों (") में संलग्न करना होगा और फिर FOR / F सिंटैक्स काम नहीं करता है।
उदाहरण:
$ for /f "tokens=* USEBACKQ" %f in (
`""F:\GLW7\Distrib\System\Shells and scripting\f2ko.de\folderbrowse.exe"" Hello '"F:\GLW7\Distrib\System\Shells and scripting"'`
) do echo %f
The filename, directory name, or volume label syntax is incorrect.
या
$ for /f "tokens=* USEBACKQ" %f in (
`"F:\GLW7\Distrib\System\Shells and scripting\f2ko.de\folderbrowse.exe" "Hello World" "F:\GLW7\Distrib\System\Shells and scripting"`
) do echo %f
'F:\GLW7\Distrib\System\Shells' is not recognized as an internal or external command, operable program or batch file.
या
`$ for /f "tokens=* USEBACKQ" %f in (
`""F:\GLW7\Distrib\System\Shells and scripting\f2ko.de\folderbrowse.exe"" "Hello World" "F:\GLW7\Distrib\System\Shells and scripting"`
) do echo %f
'"F:\GLW7\Distrib\System\Shells and scripting\f2ko.de\folderbrowse.exe"" "Hello' is not recognized as an internal or external command, operable program or batch file.
उस स्थिति में, एक कमांड का उपयोग करने और वेरिएबल में इसके परिणाम को स्टोर करने के लिए एकमात्र एकमात्र समाधान यह है कि डिफॉल्ट डायरेक्टरी को एक ही कमांड में सेट करें (अस्थायी रूप से):
pushd "%~d0%~p0"
FOR /F "tokens=* USEBACKQ" %%F IN (
`FOLDERBROWSE "Hello world!" "F:\GLW7\Distrib\System\Layouts (print,display...)"`
) DO (SET MyFolder=%%F)
popd
echo My selected folder: %MyFolder%
परिणाम फिर सही है:
My selected folder: F:\GLW7\Distrib\System\OS install, recovery, VM\
Press any key to continue . . .
निश्चित रूप से उपरोक्त उदाहरण में, मैं मानता हूं कि मेरी बैच स्क्रिप्ट उसी फ़ोल्डर में स्थित है जो मेरे निष्पादन योग्य कमांड में से एक है ताकि मैं "% ~ d0% ~ p0" वाक्यविन्यास का उपयोग कर सकूं। यदि यह आपका मामला नहीं है, तो आपको अपने कमांड पथ का पता लगाने और डिफ़ॉल्ट निर्देशिका को इसके पथ पर बदलने का एक तरीका खोजना होगा।
नायब: आश्चर्य करने वालों के लिए, यहाँ इस्तेमाल किया जाने वाला नमूना आदेश (एक फ़ोल्डर का चयन करने के लिए) FOLDERBROWSE.EXE है। मैंने इसे वेब साइट f2ko.de ( http://f2ko.de/en/cmd.php ) पर पाया ।
यदि किसी के पास एक जटिल मार्ग के माध्यम से सुलभ उस प्रकार के आदेशों के लिए एक बेहतर समाधान है, तो मुझे यह सुनकर बहुत खुशी होगी।
गाइल्स