我怎樣才能「哪個「在cmd.exe中

我怎樣才能「哪個「在cmd.exe中

有沒有一種方法可以快速確定二進位檔案(變數%PATH%指向的)所在的位置。

這相當於which perl在傳統的 UNIX shell 中執行的操作。

我明白那個資源套件有一個where命令,但該套件未安裝在我的(公司)計算機上,因此我無法使用where.

答案1

cmd.exe 的單行程式碼如下which

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

您可以將其編碼為簡單的which.bat:

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

編輯:它需要二進位檔案的全名: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

首先,根據 Bob 的建議,它檢查當前目錄中是否存在二進位。如果未找到二進位文件,則會執行另一個循環,透過 %PATH% 變數進行搜尋。

循環基於if ... gotofor命令僅用於ext透過“;”分割值特點。的值%PATHEXT%前面帶有一個空擴展名,它允許搜尋完全命名的二進位檔案 -which perl和都which perl.exe有效。

答案2

您可以嘗試 Paul Sadowski 的實用程式集合 - 他包括一個which.請參閱:http://www.paulsadowski.com/wsh/cmdprogs.htm

相關內容