ব্যাচ ফাইল. বিবৃতি যদি বিবৃতি


0

আমি এই কোডটি লেখার চেষ্টা করছি:

If %dropmode%==on (
If %drop% LEQ %potiondrop% (
set /a potion=%potion%+1
)
If %drop2% LEQ %potiondrop% (
set /a potion=%potion%+1
)
)

সুতরাং, "যদি% ড্রপ 2% লেইকিউ% পশনড্রপ%" কাজ না করে তবে "যদি% ড্রপ% এলইকিউ% পশনড্রপ%" কাজ করে তবে শর্ত "। কি করো?


আপনি কী আউটপুট পর্দায় পাবেন (যখন আপনি মুখ্য বা আপনার ECHO OFFবক্তব্যটি মন্তব্য করবেন )?
স্কট

যদি ... (দোশন = 0 + 1) যদি ... (দর্শন = 0 + 1) প্রতিধ্বনি 1
ব্যবহারকারী 339962

আমার কাছে এটি প্রশ্নটি জিজ্ঞাসা করা উচিত ছিল, "আপনি কী বিশ্বাস করেন যে প্রথম SETবিবৃতিটি কাজ করছে এবং দ্বিতীয়টি তা নয়?" আমি আপনার উত্তরটি অনুমান করি যে, "উভয় IFশর্ত সত্য, তবে potionবেরিয়ে আসে শুরুতে এর মান থেকে মাত্র একটি উচ্চ IF। "আপনি দ্বিতীয় SETবিবৃতিটি বলার set /a potion=%potion%+2বা পরিবর্তন করতে চাইলে কি হয় তা অবাক হয়ে যেতে পারেন set /a potion=%potion%+10
স্কট

উত্তর:


1

সমস্যাটি হ'ল উইন্ডোজ কমান্ড প্রম্পট / কমান্ড-লাইন ইন্টারপ্রেটার (সিএলআই), সিএমডি.এক্সই নামে পরিচিত, এটিতে একটি বাগ রয়েছে (ভাল, আমি নিশ্চিত মাইক্রোসফ্ট মনে করি এটি একটি বৈশিষ্ট্য বলে মনে করে) যেখানে এটি যখন ব্লক নির্মাণের মতো IF … ( … )বা পড়তে পারে একটি FORলুপ, এটি লুপ বা ব্লক কার্যকর হওয়ার আগে অবিলম্বে সমস্ত ভেরিয়েবলের ব্যাখ্যা করে। আপনার উদাহরণস্বরূপ, আপনি যদি ব্লকটিতে প্রবেশ করার সময় 0 হয় , তবে সেই ব্লকের অভ্যন্তরের সমস্ত উপস্থিতি 0 এ মূল্যায়ন করে এবং তাই আপনার উভয় বক্তব্যকে প্রক্রিয়া করা হয় , এমনকি আপনি যদি ব্লকের ভিতরে পরিবর্তন করেন। আপনার রিপোর্ট করা স্ক্রিন আউটপুট থেকে এটি স্পষ্ট।%variable_name%potionIf %dropmode%==on ( … )%potion%setset /a potion=0+1potion

স্থিরতাটি হ'ল সিএমডিকে বলা হয় যে ভেরিয়েবলগুলি সঠিক সময়ে প্রসারিত করার মঞ্জুরি দিন, যখন তাদের সম্পর্কিত বিবৃতিগুলি কার্যকর করা হয়। আপনি এটি যোগ করে

setlocal enabledelayedexpansion

আপনার ব্যাচ ফাইলের শুরুর কাছাকাছি কোথাও, এবং দেখতে আপনার গণনা কোড পরিবর্তন করা changing

    set /a potion=!potion!+1

বিলম্বিত প্রসারণ সক্রিয় করতে ফর্মটি ব্যবহার করে । আরও তথ্যের জন্য দেখুন এবং ।!variable_name!SET /?SETLOCAL /?


পিএস আরেকটি সমাধান হ'ল বিবৃতিগুলি %থেকে অক্ষরগুলি সরানো setএবং বলা

set /a potion=potion+1
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.