ধরা যাক আমি সিএমডি শেলটিতে নিম্নলিখিতগুলি সম্পাদন করি:
SET "FOO=bar"
সিএমডি শেলটি পুনর্ব্যবহার করা ছাড়া এই পরিবর্তনশীলটিকে অপরিবর্তিত করার কোনও উপায় আছে কি?
ধরা যাক আমি সিএমডি শেলটিতে নিম্নলিখিতগুলি সম্পাদন করি:
SET "FOO=bar"
সিএমডি শেলটি পুনর্ব্যবহার করা ছাড়া এই পরিবর্তনশীলটিকে অপরিবর্তিত করার কোনও উপায় আছে কি?
set var=উত্তরটি এমএস-ডস .2.২২ কমান্ড ডট কমের অধীনে যেমন উইন্ডোজ সেমিডি.এক্সএর অধীনে কাজ করে ঠিক তেমনই কাজ করে। (যাইহোক, উইন্ডোজের বিপরীতে, ভের = এর চারপাশে ডাবল কোট লাগানো কার্যকর নয়, পরিবর্তে এটি একটি পরিবেশের পরিবর্তনশীল তৈরি করে যার নাম ডাবল উদ্ধৃতি দিয়ে শুরু হয়))
উত্তর:
হ্যাঁ, আপনি এটি দিয়ে আনসেট করতে পারেন
set FOO=
বা স্পষ্টভাবে ব্যবহার:
set "FOO="
নিশ্চিত করুন যে =চিহ্নের পরে কোনও পেছনের বহিরাগত (অদৃশ্য) অক্ষর আসবে না । এটাই:
set FOO=থেকে পৃথক set FOO= ।অন্য পদ্ধতি
@Echo oFF
setlocal
set FOO=bar
echo %FOO%
endlocal
echo %FOO%
pause
দ্রষ্টব্য: এটি একটি ইন্টারেক্টিভ কমান্ড প্রম্পটে কাজ করবে না। তবে ব্যাচের স্ক্রিপ্টে কাজ করে।
এটি আমার উইন্ডোজ 7 সিএমডি শেলটিতে আমার জন্য কাজ করে:
set FOO=bar
echo %FOO% // bar
set FOO=
echo %FOO% // empty; calling "set" no longer lists it
setকমান্ডে স্পেসগুলি উল্লেখযোগ্য । আপনি যদি চেষ্টা করেন set FOO = barএবং চেষ্টা করেন set FOO=, তবে এটি 'এফওও' সেট করবে না। কিছু কারণে, যদিও তারা ভিতরে (যেমন?) উল্লেখযোগ্য নয় % %।
আমি নীচে শুধুমাত্র একটি মন্তব্য হিসাবে প্রস্তাব করব, তবে আমি মনে করি এটি নিজের পক্ষে দাঁড়ানো যথেষ্ট গুরুত্বপূর্ণ।
পূর্ববর্তী প্রচুর উত্তরে উল্লেখ করা হয়েছে যে একটিকে চলমান স্থানগুলি থেকে সাবধান থাকা দরকার; এবং নিশ্চিতভাবেই এটি সত্য। তবে আমি দেখতে পেয়েছি যে মাঝে মাঝে স্থানগুলি অনুসরণ করতে চাইলে সেখানে যাইতে চান - বিশেষত যদি আপনি একটি কমান্ড লাইন ওয়ান-লাইনার করছেন এবং কমান্ড বিভাজক হিসাবে স্থানের প্রয়োজন হয়।
এটিই এই সমস্যার সমাধান:
SET FOO=Bar
echo %FOO%
:: outputs Bar
SET "FOO="
echo %FOO%
:: outputs %FOO%
এইভাবে ডাব্লিকেশনগুলিকে ডাবল কোটে মোড়ানো দ্বারা, ব্যবধানের সমস্যাটি পুরোপুরি এড়ানো যায়। মধ্যবর্তী স্থানগুলি নির্মূল করার জন্য সংমিশ্রণ করে যখন ভেরিয়েবলগুলি তৈরি করা হয় তখন এটি সত্যিই কার্যকর হতে পারে - উদাহরণস্বরূপ - পাথ, উদাহরণস্বরূপ:
SET A=c:\users\ && SET D=Daniel
SET P="%a%%d%"
ECHO %P%
:: outputs "C:\Users\ Daniel"
:: Notice the undesirable space there
cmd.exe??