Wie kann ich "welche" in cmd.exe

Wie kann ich "welche" in cmd.exe

Gibt es eine Möglichkeit, schnell zu bestimmen, wo sich eine Binärdatei ( %PATH%auf die die Variable zeigt) befindet?

Dies entspricht dem Ergebnis which perleiner herkömmlichen Unix-Shell.

ich verstehe dasDas Ressourcenkithat einen whereBefehl, aber dieses Kit ist nicht auf meinem (Firmen-)Computer installiert, deshalb kann ich es nicht verwenden where.

Antwort1

Ein cmd.exe-Einzeiler dafür whichwäre:

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

Sie können es als einfaches which.bat codieren:

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

BEARBEITEN: Es ist der vollständige Name der Binärdatei erforderlich: which perl.exe, nicht which perl. Es ist möglich, eine Batchdatei zu schreiben, die %PATHEXT% berücksichtigt, sodass der vollständige Name der Binärdatei nicht erforderlich ist. Bitte lassen Sie mich wissen, wenn Sie ihn benötigen.

EDIT2: Trotzdem habe ich beschlossen, die Batchdatei zu schreiben. Hier ist sie:

@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

Zuerst wird gemäß Bobs Vorschlag geprüft, ob die Binärdatei im aktuellen Verzeichnis vorhanden ist. Wenn die Binärdatei nicht gefunden wird, wird eine weitere Schleife ausgeführt, die die Suche in der Variable %PATH% durchführt.

Schleifen basieren auf if ... goto, forder Befehl wird nur verwendet, um den extWert durch das Zeichen ';' zu teilen. Dem Wert von %PATHEXT%wird eine leere Erweiterung vorangestellt, die die Suche nach vollständig benannten Binärdateien ermöglicht – sowohl which perlals auch which perl.exefunktioniert.

Antwort2

Sie könnten Paul Sadowskis Sammlung von Dienstprogrammen ausprobieren - sie enthält ein which. Siehe es unter:http://www.paulsadowski.com/wsh/cmdprogs.htm

verwandte Informationen