উত্তরগুলি প্রদান করে যে এটি মায়া করে যে এটি কাজ করে, তবুও সত্য আপনি সাধারণ স্পেসিফিক সিএমডি আর্গুমেন্টে ছিঁচতে পারবেন না। এটি প্রমাণ করা সহজ:
echo %1
হিসাবে " " সংরক্ষণ করুন test.bat
। এই ব্যাচ ফাইলটি প্রথম যুক্তিটি আউটপুট দেয় যা সেমিডি আমাদের পাস করে।
এখন, চেষ্টা করুন এবং চালানোর test.bat
, মান নির্ধারণের %1
জন্য foo bar
। (নোট করুন foo
এবং এর মধ্যে একটি স্পেস চর রয়েছে bar
))
কয়েক বছরের জন্য ট্রায়াল-এন্ড ত্রুটি এবং বুঝতে পারেন যে এটি করার কোনও উপায় নেই । লোকেরা ব্যবহার করে পালানোর পরামর্শ দিবে ^
, তবুও test.bat foo^ bar
আউটপুট আসবে না foo bar
।
সুতরাং, আউটপুট পাওয়ার কোনও উপায় নেই foo bar
, এবং আমরা যে নিকটতম পেতে পারি তা হ'ল test.bat foo" "bar
যা উত্পাদন করে foo" "bar
, বা চালিত test.bat "foo bar"
যা উত্পাদন করে "foo bar"
।
এখন, কারণ অন্যান্য উত্তর প্রদর্শিত কাজে কারণ cd
নেই এটা নিজের এর অতিরিক্ত পার্সিং স্বাভাবিক যুক্তি ক্ষণস্থায়ী আচরণ (চলিত থেকে বিচ্যুত %1
, %2
, %3
এবং সাধারণত ব্যাচ ফাইলের মধ্যে ইত্যাদি)।
উদাহরণস্বরূপ, অদ্ভুত আদেশটি বিবেচনা করুন:
cd c:\documents and settings \some folder with spaces
কেন এটি কাজ করে? এই কারণে cd
নিজেই কিছু 7 যোগদান সমতুল্য করছেন স্বাভাবিক এক যৌক্তিক এক মধ্যে আর্গুমেন্ট। সেন্টিমিডি আর্গুমেন্ট পাস করার নিয়ম অনুসারে, আমরা 7 টি যুক্তি দেখি:
c:\documents
and
settings
\some
folder
with
spaces
এটি যেমন cd
7 টি যুক্তিগুলিকে একটি যৌক্তিক হিসাবে যুক্ত করেছে, এর মতো কিছু করছে array.join(" ")
যা পথ তৈরি করে:
c:\documents and settings \some folder with spaces
মনে রাখবেন যে এই আচরণটি কেবলমাত্র (এবং কিছু অন্যান্য ক্রিয়া) কাছে অদ্ভুতcd
। এটির সাথে সাধারণ যুক্তি পাস করার কোনও সম্পর্ক নেই।
আসলে, cd
অন্য এক বিশেষত্ব আছে। মনে রাখবেন আমরা উপরে বলেছি যে আমরা আউটপুটটি পাই না foo bar
? আমরা যে নিকটতম আউটপুটটি পেতে পারি তা হল চালানো:
test.bat foo" "bar
যা উত্পাদন করে foo" "bar
, বা:
test.bat "foo bar"
যা উত্পাদন করে "foo bar"
, বা:
test.bat "foo "bar
যা উত্পাদন করে "foo "bar
, বা:
test.bat foo" bar"
যা উত্পাদন করে foo" bar"
, বা:
test.bat "foo b"ar
যা উত্পাদন করে "foo b"ar
, বা:
test.bat fo"o bar"
যা উত্পাদন করে fo"o bar"
, বা:
test.bat fo"o ba"r
যা উত্পাদন করে fo"o ba"r
, বা:
test.bat "fo"o" bar"
যা উত্পাদন করে "fo"o" bar"
, বা:
test.bat "f""o""o"" ""b""a""r":
যা উত্পাদন করে "f""o""o"" ""b""a""r"
বা এমনকি:
test.bat """"f"""o""""o"" ""ba"""r"""""""""":
যা উত্পাদন করে """"f"""o""""o"" ""ba"""r""""""""""
।
উপরের সমস্ত উদাহরণগুলির মধ্যে একটি মিল রয়েছে, যা তারা foo bar
চরিত্রগুলি ছাঁটাই করার পরে তৈরি করবে "
। cd
এর লেখক অবশ্যই এটি উপলব্ধি করতে পেরেছিলেন ... যদি আমরা এই cd
অদ্ভুত আচরণ থেকে অনুধাবন করি যা এটি প্রাপ্ত সমস্ত আদেশকে ছাঁটাই করে"
, এই সমস্ত আদেশকে কাজ করার অনুমতি দেয়:
cd c:\documents and settings
cd "c:\documents and settings"
cd "c:"\"documents and settings"
cd c:\"documents" "and" "settings"
cd c:\"docu"ments an"d set"tings"
cd c:"\"docu"ments an"d set"ti"""ngs
cd "c"":""\"docu"ments an"d set"ti"""ngs
cd "c"":""\"do""cu"me"nts a"n""d set"ti"""ngs
cd c"""":""""\"""d"""oc""""u"me"""""nt"s a"n""d set"""""""ti""""ngs