সহজ বিকল্পটি হ'ল কমান্ডটি ব্যবহার করা - তবে এটি বেশ ধীর। ডিফল্টরূপে, এটি বর্তমান ডিরেক্টরি এবং PATH ডিরেক্টরিগুলির মধ্যে সমস্ত সম্ভাব্য মিলে যাওয়া ফাইলগুলির তালিকা করে। এটি প্রদত্ত আর্গুমেন্টটি ব্যবহার করে অনুসন্ধান করে এবং সংযুক্ত প্রতিটি PATEXT এক্সটেনশানগুলির সাথে অনুসন্ধান করে।
where java
তালিকাভুক্ত প্রথম ফাইলটি কার্যকর করা হবে এমন ফাইলের প্রতিনিধিত্ব করে। আপনার বর্তমান ডিরেক্টরি অনুসারে এই মানটি পরিবর্তন করতে পারে। একটি সাধারণ ব্যাচের স্ক্রিপ্ট ব্যবহার করা যেতে পারে কেবলমাত্র সেই ফাইলটি যা চালানো হবে return কমান্ডটি প্রথম এবং একমাত্র যুক্তি হিসাবে গ্রহণ করার জন্য আমি স্ক্রিপ্ট লিখেছি। সুতরাং এটি কোনও বাহ্যিক কমান্ড সনাক্ত করতে ব্যবহার করা যেতে পারে।
@echo off
for %%F in ('where "%~1"') do (
echo %%F
exit /b
)
ধরে নিচ্ছি স্ক্রিপ্টটিকে WHICH1.BAT বলা হয়, তারপরে ব্যবহার হবে
which1 java
%~f$PATH:1
সম্প্রসারণটি ব্যবহার করে একটি দ্রুত পদ্ধতি রয়েছে । তবে এক্সিকিউটেবল ফাইলের এক্সটেনশন আপনার অবশ্যই জানা উচিত। এছাড়াও এটি বর্তমান ডিরেক্টরিতে সাধারণত দেখা যায় না। সুতরাং সাময়িকভাবে বর্তমান ডিরেক্টরিটি অন্তর্ভুক্ত করে এমন একটি অস্থায়ী পরিবর্তিত PATH তৈরি করা ভাল। এটি অসম্ভব, তবে PATH এর মধ্যে যে কোনও একটি পথ অবর্ণিত বিষের অক্ষর ধারণ করতে পারে, তাই আমি বিলম্বিত প্রসারটি ব্যবহার করি। তবে তারপরে এমন কোনও সম্ভাবনা নেই যে কোনও পথ থাকতে পারে !
যা বিলম্বিত প্রসারণের সাথে দূষিত হবে, তাই আমি আবার এটি অক্ষম করে। চূড়ান্ত ফলাফলটি বিষের চরিত্রগুলির বিরুদ্ধে রক্ষার জন্য উদ্ধৃত করা হয়েছে।
@echo off
setlocal enableDelayedExpansion
set "modPath=.;!path!"
setlocal disableDelayedExpansion
echo "%~f$modPath:1"
উপরের স্ক্রিপ্টটি WHICH2.BAT হয়, তবে ব্যবহার হয়
which2 java.exe
উপরের সমস্ত স্ক্রিপ্টগুলি অভ্যন্তরীণ আদেশগুলি স্বীকৃতি দেবে না।
আমি একটি দৃ WH় WHICH.BAT স্ক্রিপ্ট লিখেছি যা যথাযথভাবে অভ্যন্তরীণ হিসাবে একটি কমান্ডকে যথাযথভাবে তালিকাভুক্ত করবে, অন্যথায় এটি বাহ্যিক কমান্ডটি কার্যকর করবে যা তালিকাভুক্ত করবে।
ব্যবহার হয়
which java
where
ইতিমধ্যে এটি আমাকে কিছু আকর্ষণীয় অন্তর্দৃষ্টি দিয়েছি তা করতে পারি । দেখা যাচ্ছে যেjava.exe
থেকেwindoes\system32
ফোল্ডারের ব্যবহৃত হচ্ছে।