Я привык говорить «какой фу» в системах Unix, чтобы посмотреть, что будет работать.
Сегодня у меня проблемы с программой на Windows, и я думаю, что это может быть неправильная команда, которая выполняется. Как определить из cmd.exe, какую программу он будет запускать, когда я наберу "foo"?
http://superuser.com/questions/21067/windows-equivalent-of-whereis/39260#39260
akira 14 лет назад
1
Акира: Отличная находка! (Мне было трудно заставить SU поверить, что я хотел найти слово «который».) Могу ли я благословить комментарий в ответ? :-)
Ken 14 лет назад
0
Я бы предложил, используя ваш пример "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