আমি কীভাবে সেমিডি.এক্সে "যা <দ্বৈত>" করতে পারি


10

বাইনারি (যে %PATH%পরিবর্তনশীল পয়েন্টগুলি) অবস্থিত তা দ্রুত নির্ধারণ করার কোনও উপায় আছে কি ?

এটি এমন কিছু যা which perltraditionalতিহ্যবাহী ইউনিক্স শেলের সমতুল্য কাজ করে ।

আমি বুঝতে পারি যে রিসোর্স কিটের একটি whereকমান্ড রয়েছে, তবে এই কিটটি আমার (কর্পোরেট) কম্পিউটারে ইনস্টলড নেই, তাই আমি ব্যবহার করতে পারি না where

উত্তর:


14

একটি সেমিডি.এক্সএইচ-লাইনার এর জন্য whichহবে:

for %G in (<binary.exe>) do @echo.%~$PATH:G

আপনি এটি একটি সাধারণ হিসাবে কোড করতে পারেন যা।

@echo off
for %%G in (%1) do @echo.%%~$PATH:G

সম্পাদনা: এটি বাইনারি পুরো নাম প্রয়োজন: which perl.exeনা which perl। এমন একটি ব্যাচ ফাইল লেখা সম্ভব যা% PATHEXT% কে বিবেচনায় নেয়, সুতরাং এটি বাইনারিটির পুরো নামের প্রয়োজন হয় না। আপনার প্রয়োজন হলে আমাকে জানান।

সম্পাদনা 2: যাইহোক আমি ব্যাচের ফাইলটি লেখার সিদ্ধান্ত নিয়েছি। এটা এখানে:

@echo off
setlocal enabledelayedexpansion

set ext= ;%PATHEXT%
:extloop1
for /f "delims=; tokens=1,*" %%A in ("!ext!") do (
  if exist %1%%A (
    echo .\%1%%A
    goto finish
  )
  set ext=%%B
)
if "!ext!" neq "" goto extloop1

set ext= ;%PATHEXT%
:extloop2
for /f "delims=; tokens=1,*" %%A in ("!ext!") do (
  for %%C in (%1%%A) do (
    if exist %%~$PATH:C (
      echo %%~$PATH:C
      goto finish
    )
  )
  set ext=%%B
)
if "!ext!" neq "" goto extloop2

:finish
endlocal

প্রথমত, ববের অভিযোজন অনুযায়ী, বাইনারিটি বর্তমান ডিরেক্টরিতে উপস্থিত কিনা তা পরীক্ষা করে। বাইনারিটি পাওয়া না গেলে, অন্য লুপটি কার্যকর করা হয় যা% PATH% ভেরিয়েবলের মাধ্যমে অনুসন্ধান করে।

লুপগুলি ভিত্তিক হয় if ... goto, forকমান্ডটি কেবল ext'দ্বারা' দ্বারা বিভক্ত করতে ব্যবহৃত হয়; অক্ষর। এর মান %PATHEXT%একটি খালি এক্সটেনশনের সাহায্যে প্রম্পেন্ড করা হয়, যা পুরো নামযুক্ত বাইনারি - উভয়ই কাজ করে which perlএবং অনুসন্ধান করার অনুমতি দেয় which perl.exe


1
ঠিক আছে, যদি আপনি একটি বর্ধিত ব্যাচ ফাইল লেখার শেষ না করেন, তবে পাশাপাশি সমস্ত পথ যেতে হবে এবং .\binary.*প্রথমে চেক করুন । কমান্ড পাথের ডিরেক্টরিগুলি অনুসন্ধানের আগে অপারেটিং সিস্টেম সর্বদা বর্তমান ডিরেক্টরিটিতে সর্বদা অনুসন্ধান করে।
বব

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