এক্সিকিউটেবল যাকে বলা হচ্ছে তার বিপরীত উপায় আছে?


0

আমার মেশিনে আমি একাধিক জেডিকে ইনস্টল করেছি এবং আমি এমন একটি সিস্টেমে চালিয়ে যাচ্ছি যাতে দীর্ঘ পথের পরিবেশের পরিবর্তনশীল। জাভাতে আমার কলটি কী সমাধান করেছে তা দেখার কোনও উপায় আছে?

আমি এমন কিছু সন্ধান করছি যা এই ধরণের কাজ করে বা একই কাজ করতে আমাকে সহায়তা করতে পারে:

 C:\> set path=c:\program files\java\jre1.8.0.20\bin\;%path%;
 C:\> lookup java
 java => c:\program files\java\jre1.8.0.20\bin\java.exe

 C:\> set path=c:\program files(x86)\java\jre1.8.0.20\bin\;%path%;
 C:\> lookup java
 java => c:\program files(x86)\java\jre1.8.0.20\bin\java.exe

আমি সম্ভবত এটি টাস্ক ম্যানেজার, ওপেন প্রক্রিয়া অবস্থান ইত্যাদির মাধ্যমে খুঁজে বের করতে পারি তবে আমি এটিকে কোনও স্ক্রিপ্টে আবদ্ধ করতে সক্ষম হতে চাই।

উত্তর:


1

সহজ বিকল্পটি হ'ল কমান্ডটি ব্যবহার করা - তবে এটি বেশ ধীর। ডিফল্টরূপে, এটি বর্তমান ডিরেক্টরি এবং 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ফোল্ডারের ব্যবহৃত হচ্ছে।
জেসিউইউইং
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.