मैं cmd.exe में "किस <बाइनरी>" कर सकता हूं


10

क्या यह जल्दी से निर्धारित करने का एक तरीका है जहां एक बाइनरी (वह %PATH%चर अंक) स्थित है।

यह एक ऐसी चीज है जो which perlएक पारंपरिक यूनिक्स खोल के बराबर होगी ।

मैं समझता हूं कि संसाधन किट में एक whereकमांड है, लेकिन यह किट मेरे (कॉर्पोरेट) कंप्यूटर पर स्थापित नहीं है, इसलिए मैं इसका उपयोग नहीं कर सकता where

जवाबों:


14

एक cmd.exe वन-लाइनर whichहोगा:

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

आप इसे एक साधारण के रूप में कोड कर सकते हैं।

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

EDIT: इसके लिए बाइनरी का पूरा नाम चाहिए: which perl.exeनहीं which perl। एक बैच फ़ाइल लिखना संभव है जो% PATHEXT% को ध्यान में रखता है, इसलिए इसे बाइनरी के पूर्ण नाम की आवश्यकता नहीं है। अगर आपको जरूरत हो तो कृपया मुझे बताएं।

EDIT2: वैसे भी मैंने बैच फाइल लिखने का फैसला किया है। यह रहा:

@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.*पहले जांच कर सकते हैं । ऑपरेटिंग सिस्टम हमेशा वर्तमान निर्देशिका में खोज करता है, इससे पहले कि यह कमांड पथ में निर्देशिकाओं को खोजे।
बॉब

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.