ব্যাচটি নন-সমান (বৈষম্য) অপারেটর


263

মতে এই , !==!না সমান স্ট্রিং অপারেটর। চেষ্টা করে দেখতে পেলাম:

C:\> if "asdf" !==! "fdas" echo asdf
!==! was unexpected at this time.

আমি কি ভুল করছি?

উত্তর:



105

পরিবর্তে NEQ ব্যবহার করুন।

if "asdf" NEQ "fdas" echo asdf

37
এর জন্য কমান্ড এক্সটেনশনগুলি চালু করা দরকার (এগুলি ডিফল্টরূপে 2000+ এ থাকে তবে এটি সিস্টেমের প্রশস্ত বা প্যারামিটার হিসাবে cmd.exe হিসাবে বন্ধ করা যেতে পারে) সাধারণত আপনার সেটোকল দিয়ে চালু করা উচিত, তবে সাধারণের জন্য সমান পরীক্ষা না হলে, কেবল "যদি না" ব্যবহার করুন তবে এটি ভাল পুরানো ডস দিনগুলিতে ফিরে যায়
অ্যান্ডার্স

29

আমি জানি এটি বেশ পুরানো, তবে পার্টিতে দেরি করা ব্যক্তিদের জন্য এটি এখনও কার্যকর হতে পারে। (সম্পাদনা: এটি এখনও ট্র্যাফিক পেয়েছে বলে আপডেট হয়েছে এবং @ গুজাক মন্তব্যগুলিতে উল্লেখ করেছেন যে আমার নমুনার মূল বিশ্লেষণটিও ভুল ছিল।)

আমি আপনার লিঙ্কে উদাহরণ কোড থেকে এটি টান:

IF !%1==! GOTO VIEWDATA
REM  IF NO COMMAND-LINE ARG...
FIND "%1" C:\BOZO\BOOKLIST.TXT
GOTO EXIT0
REM  PRINT LINE WITH STRING MATCH, THEN EXIT.

:VIEWDATA
TYPE C:\BOZO\BOOKLIST.TXT | MORE
REM  SHOW ENTIRE FILE, 1 PAGE AT A TIME.

:EXIT0

!%1==!==বাম দিকের জিনিসটি, যা আপনার ভেরিয়েবলটি ডানদিকে থাকা জিনিস থেকে আলাদা, যা যাচাই করে তা যাচাই করার জন্য কেবল উদ্দেশ্যমূলক একটি অদ্ভুত ব্যবহার । !এই ক্ষেত্রে শুধু একটি অক্ষর স্থানধারক হয়। এটা কিছু হতে পারে। যদি %1বিষয়বস্তু থাকে তবে সাম্যটি মিথ্যা হবে, যদি এটি না হয় তবে আপনি কেবল তুলনা !করবেন !এবং এটি সত্য হবে।

!==!অপারেটর নয়, সুতরাং লেখাটি "asdf" !==! "fdas"বেশ বোকামিযুক্ত।

ব্যবহারের পরামর্শটি if not "asdf" == "fdas"অবশ্যই যাওয়ার উপায়।


ধন্যবাদ জাতিরম .. আবার প্রশ্ন জিজ্ঞাসার চেয়ে উত্তর সন্ধানকারীদের পক্ষে অবশ্যই সহায়ক। এটি স্ট্যাকএক্সচেঞ্জের প্রশ্নের বয়সের কারণে উত্তর / মন্তব্য করার ক্ষমতাটিকে তালাবদ্ধ করার মতো নয়, তাই মনে করুন এটি সম্পূর্ণ গ্রহণযোগ্য।
ব্যবহারকারী 66001

4
!ক্ষেত্রে এখানে ব্যবহার করা হয় %1খালি, এইভাবে পরীক্ষা ফলে !==!, যা সত্য। আপনি তার %1.==.পরিবর্তে ব্যবহার করতে পারেন (প্রায় কোনও চরিত্রই করত) - উদ্দেশ্য যে সাম্যতা পরীক্ষার উভয় পক্ষের কিছু পরীক্ষা করার দরকার রয়েছে তা নিশ্চিত করা । !==!স্বরলিপি স্পষ্টভাবে হয় না একটি না সমান সাইন ইন করুন। সঙ্গে ভাল লাঠি if not ...
গুজাক

22

চেষ্টা করুন:

if not "asdf" == "fdas" echo asdf

এটি আমার জন্য উইন্ডোজ এক্সপি-তে কাজ করে (আপনি যে কোড পোস্ট করেছেন তার জন্য আমি আপনার মতো একই ত্রুটি পেয়েছি)।


4

NEQ সাধারণত সংখ্যার জন্য ব্যবহৃত হয় এবং == সাধারণত স্ট্রিং তুলনার জন্য ব্যবহৃত হয়।

স্ট্রিং তুলনা (NEQ এর জায়গায়) জন্য একটি নির্দিষ্ট এবং সমমানের অসমতার অপারেন্ডের উল্লেখ করে এমন কোনও ডকুমেন্টেশন আমি পাই না। IF NOT == ব্যবহার করে সমাধানটি সর্বাধিক সুস্পষ্ট পদ্ধতির বলে মনে হচ্ছে। আমি যদি তাত্ক্ষণিকভাবে এমন পরিস্থিতিতে ভাবতে পারি না যেখানে ব্যাচ ফাইলে ক্রিয়াকলাপের মূল্যায়নের কারণে স্ট্রিংগুলিতে আইএফ নন == তুলনা পদ্ধতি প্রয়োগ করার সময় কোনও সমস্যা বা অপ্রত্যাশিত আচরণের কারণ হয়ে দাঁড়ায়।

আমি আশা করি যে নিম্ন স্তরে দুটি ফাংশন কীভাবে আলাদা আচরণ করে সে সম্পর্কে অন্তর্দৃষ্টি দিতে পারতাম - পৃথক ব্যাচ ফাইলগুলি বিচ্ছিন্ন করে (যা এনইকিউ এবং যদি না == ব্যবহার করে) কোনও এলোমেলো অফার করে (আনুষ্ঠানিকভাবে নথিভুক্ত) নেটিভ এপিআই কল কনহস্ট.এক্সই ব্যবহার করছে?

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