ব্যাচ ফাইলে একটি ভেরিয়েবল সংজ্ঞায়িত এবং ব্যবহার করা


450

আমি ব্যাচ ফাইলে একটি ভেরিয়েবল সংজ্ঞায়িত ও ব্যবহার করার চেষ্টা করছি। দেখে মনে হচ্ছে এটি সহজ হওয়া উচিত:

@echo off

set location = "bob"
echo We're working with "%location%"

আমি যে আউটপুটটি পাই তা নিম্নলিখিত:

We're working with ""

এখানে কি হচ্ছে? আমার পরিবর্তনশীল প্রতিধ্বনিত হচ্ছে না কেন?

উত্তর:


551

=নামের অংশ হিসাবে ব্যাখ্যার আগে স্থান এবং তার পরে স্থানটি (পাশাপাশি উদ্ধৃতি চিহ্নগুলি) মানটির অংশ হিসাবে ব্যাখ্যা করা হয়। সুতরাং আপনার তৈরি ভেরিয়েবলের সাথে উল্লেখ করা যেতে পারে %location %। যদি এটি আপনি চান না তবে সংজ্ঞাটিতে অতিরিক্ত স্থান (গুলি) সরিয়ে ফেলুন।


7
স্থান সামনে যদি =নাম তারপর পরিবর্তনশীল অংশ হিসেবে ব্যাখ্যা করা হয় না পারেন, যেমন রেফারেন্সড করা %location%, এটা যেমন রেফারেন্সড করা হয়েছে %location %। এটা কি টাইপো?
দুর্ভাগ্য পরিবর্তনশীল

7
@ দুর্ভেদ্য পরিবর্তনশীল: আপনি ঠিক বলেছেন; মনে হচ্ছে আসল উত্তরটি একটি ভুল সম্পাদনার শিকার হয়েছে।
ব্রায়ান নিকসন

18
সুতরাং এমএস এটি নিয়ে এসেছিল
ফালাক

5
@ ফালাক alias x = y* নিক্স জমিতে যেমন বিরোধিতা করেছেন ?
বেসিক

1
@ ফালাক তাহলে আপনার কি মনে হয় দৌড়ানোর সময় বাশ কি করবে x = y?
ফুক্লভিভি

263

স্থানগুলি উল্লেখযোগ্য are আপনি 'location ' একটি মান সহ একটি ভেরিয়েবল তৈরি করেছেন
' "bob"'দ্রষ্টব্য - স্থানের অবস্থানটি দেখানোর জন্য সংযুক্ত একক উদ্ধৃতি যুক্ত করা হয়েছিল।

আপনি যদি নিজের মানতে উদ্ধৃতি চান তবে আপনার কোডটি দেখতে হবে

set location="bob"

আপনি যদি উদ্ধৃতিগুলি না চান তবে আপনার কোডটি দেখতে হবে

set location=bob

বা আরও ভাল

set "location=bob"

সর্বশেষ বাক্য গঠন অজান্তেই ট্রেলিং স্পেসগুলিকে মান পেতে বাধা দেয় এবং এছাড়াও বিশেষ অক্ষর & |ইত্যাদির বিরুদ্ধে সুরক্ষা দেয় etc.


8
শেষ সিনট্যাক্সের জন্য কি কোন ডাউনসাইড রয়েছে?
ওল্ফ

8
@ ওল্ফ - না, কোনও খারাপ দিক নেই। তবে এটি সর্বাধিক কার্যকর হওয়ার সীমা রয়েছে। যতক্ষণ মানটিতে কোটস থাকে না, ততক্ষণ প্রায় কোনও অক্ষর পালিয়ে যাওয়ার চিন্তা না করেই মানটিতে উপস্থিত হতে পারে। ব্যতিক্রমগুলি হ'ল %, এবং সম্ভবত !বিলম্বিত প্রসারণ সক্ষম করা থাকলে। কিন্তু যদি মান কোট রয়েছে, তাহলে আপনি যখন মত বিষ অক্ষর অব্যাহতি সম্পর্কে চিন্তা করতে হবে |, &ইত্যাদি
dbenham

1
এটি উইন্ডোতে পরিবেশ-পরিবর্তনশীল সেট করার মতোই বলে মনে হচ্ছে। ব্যাচ স্ক্রিপ্টগুলিতে কি স্থানীয়-ভেরিয়েবলগুলি ব্যবহারের একমাত্র উপায়?
পরশিশন

1
@ ওল্ফ, আপনাকে কেবল কমান্ড এক্সটেনশনগুলি সক্ষম হয়েছে তা নিশ্চিত করতে হবে তবে এটি যাইহোক ডিফল্ট কনফিগারেশন ...
অ্যাসিপফ্ল

7

ইনপুট location.bat

@echo off
cls

set /p "location"="bob"
echo We're working with %location%
pause

আউটপুট

We're working with bob

(ভুল আপনি করেছেন: spaceএবং " ")


4
set /pব্যবহারকারীকে অনুরোধ জানায় এবং নির্দিষ্ট ভেরিয়েবলটিতে উত্তর সঞ্চয় করে। যেমন,set /p name="What is your name? " & echo Hello, %name%.
রবার্ট মুনি

6
-1, বাক্য গঠনটি set /p "varname"="text"ভুল, এটি নামের একটি ভেরিয়েবল তৈরি করে location"(একটি পিছনের উদ্ধৃতি সহ!)। এটা হওয়া উচিত set /p location="bob"। তবুও, এটি আর প্রশ্নের সাথে মেলে না
jeb
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.