"который" для Windows

876
Ken

Возможное дублирование:
Windows-эквивалент whereis?

Я привык говорить «какой фу» в системах Unix, чтобы посмотреть, что будет работать.

Сегодня у меня проблемы с программой на Windows, и я думаю, что это может быть неправильная команда, которая выполняется. Как определить из cmd.exe, какую программу он будет запускать, когда я наберу "foo"?

1
http://superuser.com/questions/21067/windows-equivalent-of-whereis/39260#39260 akira 14 лет назад 1
Акира: Отличная находка! (Мне было трудно заставить SU поверить, что я хотел найти слово «который».) Могу ли я благословить комментарий в ответ? :-) Ken 14 лет назад 0

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

0
Aeo

Я бы предложил, используя ваш пример "foo", набрать

foo /? 

Это должно сделать то же самое в Windows, как и добавление --help в Linux. Заметьте, что не всегда, но он должен дать вам точное представление о том, что происходит, а также некоторый синтаксис команд.

Но работает фу /? не показывает, из какого каталога он работает, только как его запустить, а это не то, о чем спрашивает OP. steve.lippert 14 лет назад 0
@ steve.lippert .. правда, но возврат использования часто указывает * что-то * на саму программу - хотя, возможно, не достаточно во всех случаях warren 14 лет назад 0
К сожалению, в этом случае это команда, которая не имеет видимого вывода или выдает общее сообщение об ошибке. Из `/?` (И любых других флагов, которые я могу придумать) я не могу точно сказать, какой из них работает. Ken 14 лет назад 1
0
steve.lippert

Я не знаю, что для Windows, но из командной строки вы можете запустить путь, чтобы увидеть, где он ищет файлы. Я считаю, что он ищет путь по порядку и запускает первый исполняемый файл, который находит.

Помните, что CMD.EXE также будет искать программу в локальном каталоге, и я считаю, что это имеет приоритет.

Я думал, что слышал, что у cmd.exe есть некоторые особые случаи, которых нет в% PATH%, поэтому я и спрашиваю. Плюс я не люблю идею охоты через все пути самостоятельно. :-) Ken 14 лет назад 1
0
warren

Для расширения Стива «s ответа, от %SYSTEM_ROOT%вы можете запустить attribпоиск, чтобы увидеть, где„Foo“живет, а затем сравнить с% PATH%, чтобы увидеть, который будет выполнять первый:

attrib /s foo.exe ... echo %PATH% 
Хорошо знать! Но это переменная% systemroot%. cd% systemroot%, attrib / s ping.exe steve.lippert 14 лет назад 0
-1: `attrib / s foo.exe` просто ищет текущий каталог и все подкаталоги для foo.exe. (Вы можете сделать то же самое с `dir / ad / s / b foo.exe` или Win + F.) На моем компьютере% SYSTEMROOT% - это C: \ WINDOWS, так что вы действительно просто ищете в этом каталоге и ниже. Вы могли бы сначала `cd \`, или использовать Win + F для поиска foo.exe, но эти преформы действительно долго ищут, когда вам просто нужно найти путь. Bavi_H 14 лет назад 0
0
Charlie Sauer

То, что поставляется с Cygwin ( http://cygwin.org ), будет запускаться из cmd.exe и, вероятно, делать то, что вы хотите в противном случае. Имейте в виду, что если вы ищете .bat, вам нужно явно добавить .bat, например, "which gorp.bat" найдет gorp.bat, а "which gorp" - нет.

Хорошая идея, но, к сожалению, это сервер, на котором нет Cygwin, и я не уверен, что они хотят, чтобы я установил Cygwin там. Ken 14 лет назад 0