Как я могу "который <binary>"в cmd.exe </binary>

5399
René Nyffenegger

Есть ли способ быстро определить, где находится двоичный файл (на который %PATH%указывает переменная).

Это то, что можно сделать which perlв традиционной оболочке Unix.

Я понимаю, что у комплекта ресурсов есть whereкоманда, но этот комплект не установлен на моем (корпоративном) компьютере, поэтому я не могу его использовать where.

9

2 ответа на вопрос

14
MBu

Однострочник 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 

Во-первых, согласно предложению Боба, он проверяет, существует ли двоичный файл в текущем каталоге. Если двоичный файл не найден, выполняется другой цикл, который выполняет поиск по переменной% PATH%.

Циклы основаны на if ... goto, forкоманда используется только для разделения extзначения на ';' персонаж. Значение %PATHEXT%предваряется пустым расширением, которое позволяет искать полностью именованный двоичный файл - как which perlи which perl.exeработает.

Что ж, если вы закончите писать расширенный пакетный файл, то можете пройти весь путь и сначала проверить `. \ Binary. *`. [* Операционная система всегда сначала ищет в текущем каталоге, а затем в каталогах по пути команды. *] (Http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en- нас / path.mspx? произв = истина) Bob 12 лет назад 1
3
yosh m

Вы можете попробовать коллекцию утилит Пола Садовски - он включает в себя which. Смотрите его по адресу: http://www.paulsadowski.com/wsh/cmdprogs.htm