Поскольку у меня иногда возникают проблемы с путями, когда один из моих собственных сценариев cmd скрыт (скрыт) другой программой (ранее в пути), я хотел бы иметь возможность найти полный путь к программе в командной строке Windows, учитывая просто его имя.
Есть ли эквивалент UNIX-команды 'which'?
В UNIX which command
печатает полный путь данной команды, чтобы легко находить и устранять эти проблемы с теневым копированием.
which
стандартном Unix нет команды. Утилита POSIX естьtype
. В командной оболочке C есть команда which, а в некоторых системах она является внешним исполняемым файлом. Например, в Debian Linuxwhich
поставляется из пакета с именемdebutils
. Это внешнееwhich
не «видит» встроенные функции оболочки, псевдонимы или функции.type
делает; У Bashtype
есть возможность подавить это и просто выполнить поиск пути.Ответы:
Windows Server 2003 и более поздние версии (т. Е. Все, что после 32-разрядной версии Windows XP) предоставляют
where.exe
программу, которая выполняет некоторые действияwhich
, хотя она соответствует всем типам файлов, а не только исполняемым командам. (Он не соответствует встроенным командам оболочки, таким какcd
.) Он даже принимает символы подстановки, поэтомуwhere nt*
находит все файлы в вашем%PATH%
и текущем каталоге, имена которых начинаются сnt
.Попробуйте
where /?
за помощь.Обратите внимание , что Windows PowerShell определяет в
where
качестве псевдонима вWhere-Object
командлет , так что если вы хотитеwhere.exe
, вы должны ввести полное имя вместо опуская.exe
расширения.источник
where.exe
это не оболочку встроенный, вам нужно иметь%windir%\system32
на своем контекстуальном%PATH%
- что может быть не так, как использованиеwhere
предполагает , что вы можете работать над проблемами с вашим путем!Хотя в более поздних версиях Windows есть
where
команда, вы также можете сделать это в Windows XP с помощью модификаторов переменных среды, как показано ниже:Вам не нужны никакие дополнительные инструменты, и это не ограничивается тем, что
PATH
вы можете заменить любую переменную среды (в формате пути, конечно), которую вы хотите использовать.И, если вам нужно то, которое может обрабатывать все расширения в PATHEXT (как это делает сама Windows), то это поможет:
На самом деле он возвращает все возможности, но вы можете легко настроить его для конкретных правил поиска.
источник
which
задал код в днях W95 / DOS, порядок поиска был следующим: текущий каталог, затем каждый путь dir, для cmd.com, затем cmd.exe, затем cmd.bat. Таким образом, даже cmd.bat в текущем каталоге выполнил befroe cmd.exe soemwhere в пути@echo off for %%i in (%1) do @echo. %%~$PATH:%i
чтобы добавить его в скрипт alias.bat, который вы загружаете при каждом запуске cmd.exe (поместите вышеуказанный скрипт в новый каталог с именем C: \ usr \ aliases):DOSKEY which=C:\usr\aliases\which.bat $*
Затем вы можете создать скрипт для запуска cmd.exe с файлом alias.bat:cmd.exe /K E:\usr\aliases\alias.bat
Под PowerShell
Get-Command
найдет исполняемые файлы в любом месте$Env:PATH
.Он также находит командлеты PowerShell, функции, псевдонимы, файлы с настраиваемыми расширениями исполняемых файлов через
$Env:PATHEXT
и т. Д., Определенные для текущей оболочки (довольно похоже на Bashtype -a foo
), что делает его более подходящим, чем другие инструменты, такие какwhere.exe
,which.exe
и т. Д., Которые не знают об этих Команды PowerShell.Поиск исполняемых файлов, используя только часть имени
Поиск пользовательских исполняемых файлов
Чтобы найти другие неиспользуемые исполняемые файлы (python, ruby, perl и т. Д.), Необходимо добавить расширения файлов для этих исполняемых файлов в
PATHEXT
переменную среды (по умолчанию.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.CPL
), чтобы идентифицировать файлы с этими расширениямиPATH
как исполняемые. ТакGet-Command
же, как и эта переменная, она может быть расширена для получения списка пользовательских исполняемых файлов. напримерВы можете быстро настроить псевдоним с помощью
sal which gcm
(краткая формаset-alias which get-command
).Дополнительную информацию и примеры можно найти в онлайн-справке для
Get-Command
.источник
.BAT
и.CMD
т. Д.), Они считаются исполняемыми, потому что их расширения названы вPATHEXT
переменной (которая по умолчанию естьPATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.CPL
). Другие исполняемые типы (например.py
,.rb
и т. Д.) Могут быть добавлены путем добавления расширения файла и создания ассоциации исполняемых файлов сassoc
/ftype
- например, docs.python.org/3.3/using/…В Windows PowerShell:
источник
Если у вас установлен PowerShell (что я рекомендую), вы можете использовать следующую команду в качестве грубого эквивалента (замените имя_программы именем вашего исполняемого файла):
Больше здесь: Мой Манвич! PowerShell который
источник
($Env:Path).Split(";") | Get-ChildItem -filter programName*
это так легко набрать ... ;-)Инструменты GnuWin32 имеют
which
наряду с целым рядом других инструментов Unix.источник
В Windows CMD
which
звонкиwhere
:источник
Cygwin - это решение. Если вы не возражаете против использования стороннего решения, Cygwin - это то, что вам нужно.
Cygwin предоставляет вам удобство * nix в среде Windows (и вы можете использовать его в командной оболочке Windows или использовать оболочку * nix по вашему выбору). Он дает вам целый набор * nix команд (например
which
) для Windows, и вы можете просто включить этот каталог в свойPATH
.источник
В PowerShell это
gcm
даёт отформатированную информацию о других командах. Если вы хотите получить только путь к исполняемому файлу, используйте.Source
.Например:
gcm git
или(gcm git).Source
Tidbits:
gcm
является псевдонимомGet-Command
командлета .Set-Alias which gcm
и использовать его как:(which git).Source
.источник
У меня есть функция в моем профиле PowerShell под названием «который»
Вот как выглядит результат:
источник
> get-command app.exe | format-list
сработало отлично!Получите unxutils отсюда: http://sourceforge.net/projects/unxutils/
золото на платформах Windows, ставит все приятные утилиты Unix на стандартную Windows DOS. Использую его годами.
В него включено «которое». Обратите внимание, что он чувствителен к регистру, хотя.
NB: чтобы установить его, взорвите zip-файл и добавьте ... \ UnxUtils \ usr \ local \ wbin \ в переменную env вашего системного пути.
источник
.
для \ r. Это 99% решение, хотя точно!Нет в наличии для Windows, но предоставляется Services for Unix, и есть несколько простых пакетных скриптов, которые выполняют то же самое, что и этот .
источник
Если вы можете найти бесплатный компилятор Pascal, вы можете скомпилировать это. По крайней мере, это работает и показывает необходимый алгоритм.
источник
my_funk;
не нужен. Спасибо за размещение программы на Паскале, напоминает мне о моей молодости! Жаль, что Паскаль не эволюционировал.Лучшая версия, которую я нашел в Windows - это утилита Джозефа Ньюкомера "whereis", которая доступна (с источником) с его сайта .
Статья о разработке "whereis" стоит прочитать.
источник
Сначала вы можете установить Git из Downloading Git , а затем открыть Git Bash и набрать:
источник
Ни один из Win32-портов Unix, которые я мог найти в Интернете, не является удовлетворительным, потому что у них всех есть один или несколько из этих недостатков:
Так что в конце концов я написал свой собственный, который правильно поддерживает все вышеперечисленное.
Доступно здесь: http://jf.larvoire.free.fr/progs/which.exe
источник
Этот пакетный файл использует обработку переменных CMD, чтобы найти команду, которая будет выполнена в пути. Примечание: текущий каталог всегда выполняется перед путем), и в зависимости от того, какой вызов API используется, другие местоположения ищутся до / после пути.
Смотрите
set /?
за помощью.источник
Я использую GOW (GNU на Windows), который является облегченной версией Cygwin. Вы можете взять его с GitHub здесь .
Снимок экрана со списком команд, включенных в GOW:
источник
Я создал инструмент, похожий на Нед Батчелдер:
Поиск файлов .dll и .exe в PATH
Хотя мой инструмент предназначен главным образом для поиска различных версий DLL, он показывает больше информации (дата, размер, версия), но он не использует PATHEXT (я надеюсь обновить мой инструмент в ближайшее время).
источник
Просто нужно опубликовать этот пакетный файл для Windows:
Тест:
Не совсем в одну строку, если вы заключите код в
setlocal enableextensions
иendlocal
.источник
Для вас, пользователей Windows XP (у которых нет
where
встроенной команды), я написал команду "где, как", как называется rubygemwhichr
.Чтобы установить его, установите Ruby.
затем
Запустите это как:
C:> whor cmd_here
источник
TCC и TCC / LE от JPSoft - замены CMD.EXE, которые добавляют значительную функциональность. Относящийся к вопросу OP
which
является встроенной командой для процессоров команд семейства TCC.источник
Я использовал
which
модуль из npm довольно давно , и он работает очень хорошо: https://www.npmjs.com/package/which. Это отличная многоплатформенная альтернатива.Теперь я переключился на то,
which
что идет с Git. Просто добавьте к своему пути/usr/bin
путь из Git, который обычно находится вC:\Program Files\Git\usr\bin\which.exe
.which
Двоичная будетC:\Program Files\Git\usr\bin\which.exe
. Это быстрее, а также работает, как ожидалось.источник
попробуй это
источник