উইন্ডোজ ব্যাচের স্ক্রিপ্টে কমান্ড-লাইন আর্গুমেন্টগুলি সরবরাহ করা


10

আমাকে উইন্ডোজ ব্যাচের স্ক্রিপ্ট তৈরি করতে হবে যেখানে আমাকে কয়েকটি কমান্ড-লাইন আর্গুমেন্ট পাস করতে হবে। এই যুক্তিগুলি যে কোনও ক্রমে হাজির হতে পারে, তবে স্ক্রিপ্টটি আর্গুমেন্টের নামের উপর ভিত্তি করে সেগুলি সঠিকভাবে নেওয়া উচিত। উদাহরণ:

<scriptname> -age <agevalue> -gender <gender>
<scriptname> -gender <gender> -age <agevalue>

স্ক্রিপ্টটি উপরের দুটি উপায়ে যেকোন একটিতে কল করা যেতে পারে তবে বয়স এবং লিঙ্গ সঠিকভাবে বাছাই করা উচিত এবং ভেরিয়েবলগুলিকে নির্ধারণ করা উচিত। আর্গুমেন্টগুলি তাদের আগে স্যুইচ দ্বারা চিহ্নিত করা যেতে পারে - যেমন - -age, -gender ইত্যাদি

কেউ দয়া করে আমাকে অভ্যন্তরীণভাবে এটি চিহ্নিত করার একটি উদাহরণ দিতে পারেন?

উত্তর:


10

ব্যাচ, দুর্ভাগ্যবশত, একটি builtin নেই getopsফাংশন মত আছে। তবে আপনি নিজের দরিদ্র লোকের রূপটি বাস্তবায়ন করতে পারেন:

:GETOPTS
 if /I %~1 == --age set AGE=%2& shift
 if /I %~1 == --gender set GENDER=%2& shift
 shift
if not (%1)==() goto GETOPTS

এটি আর্গুমেন্টগুলির সংখ্যা ছাড়িয়ে যাওয়ার কারণে জটিল হতে পারে তবে এটি বিলটি ফিট করে। ধন্যবাদ
ধিওয়াকার রবিকুমার

1
Robvenderwoude.com/if.php অনুসরণ করে লিখতে ভাল if /I "%~1" == "--age" ... (টিল্ড নোট করুন) ভাল হবে। এটি খালি পরামিতি বা পরামিতিগুলির জন্যও কাজ করে যা ডাবল উদ্ধৃতিতে দেওয়া হয়।
এক্সেল কেম্পার

আপনি ডাবল উদ্ধৃতি যোগ করতে চাইতে পারেন। অন্যথায়, বিবৃতি খালি প্যারামিটার% 1 নিয়ে কাজ করে না।
এক্সেল কেম্পার

আপনার বিভিন্ন সম্ভাব্য আর্গুমেন্টের যদি একটি সেট ফর্ম্যাট বা টাইপ থাকে যেমন বয়স (সংখ্যাসূচক হওয়া) এবং লিঙ্গ ("এম" বা "এফ" হওয়া) আপনার আর্গুমেন্টগুলি সংজ্ঞায়িত করতে হবে না, পরিবর্তে এগুলি নির্ধারণের জন্য তুলনা স্বীকৃতি ব্যবহার করুন স্ক্রিপ্টের মধ্যে উপযুক্ত ভেরিয়েবল। আমি এটি প্রথম ব্যাচের স্ক্রিপ্টের জন্য করেছি আমি আমার প্রথম আইটি কাজের মধ্যে 9x এবং XP এর মধ্যে রূপান্তরকালীন সময়ে লিখেছিলাম wrote স্ক্রিপ্টটি হয় ওএস প্রকারের জন্য আর্গুমেন্ট গ্রহণ করতে পারে, স্ক্রিপ্টটি ড্রাইভটি চালিয়ে যাচ্ছিল, এবং আরও কয়েকটি জিনিস, বা এটি যথাযথ সেটিংস স্বয়ংক্রিয়ভাবে সনাক্ত করতে পারে। কিছুটা ওভারকিল, তবে একটি মজাদার অনুশীলন।
music2myear

8

আপনি কি পাওয়ারশেল দিয়ে এটি করতে পারেন? বা এটি ব্যাচ করা প্রয়োজন? পাওয়ারশেল এটিকে সুন্দর ও সহজ করে তুলেছে, আপনার স্ক্রিপ্টের শীর্ষে আপনাকে এমন কিছু যুক্ত করতে হবে এবং তারপরে আপনি প্রতিটি প্যারামিটারকে যে কোনও ক্রমে কল করতে পারেন

param (
[string]$Age,
[string]$Gender
)

আপনি এটি ব্যাচের সাহায্যে করতে পারেন তবে এটির জন্য প্রচুর প্যারামিটার চেকিং প্রয়োজন হবে .. কিছু ব্যাচের স্ক্রিপ্টগুলির কয়েকটি লিঙ্ক এখানে এটি করা আছে

http://www.ericphelps.com/batch/samples/arguments.bat.txt

(সম্ভাব্য দ্বিগুণ)

/programming/5215729/is-there-a-way-to-pass-parameters-by-name-and-not-by-order-to-a-batch-bat-f


1
। এটি শুধুমাত্র ব্যাচ স্ক্রিপ্ট :( তবে আমরা কঠোর প্রয়োজন আছে এটা একটি ব্যাচ স্ক্রিপ্ট হতে হয়েছে অনেক ধন্যবাদ যদিও :)।
Dhiwakar রবিকুমার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.