Дос исполняемый поиск кроме PATH

2822
ripper234

Я имею открытый cmd (Windows 7), и я набираю «java.exe», и система находит исполняемый файл в c: \ program files \ java \ jre6 \ bin.

Тем не менее, эта папка не находится в пути. Какой другой механизм влияет на поиск exe?

3
Есть ли какая-либо переменная, как JRE_HOME, JAVA__HOME на вашем пути, она также может выполняться ukanth 15 лет назад 0

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

14
Joshua

Начиная с Vista и выше, Windows теперь включает в себя утилиту под названием where. Эта программа работает так же, как вы ожидаете, что аналог Unix (я рад, что они добавили его!)

Использование:

C:\>where java C:\Windows\System32\java.exe 

Что еще лучше о whereтом, что он покажет вам все исполняемые файлы, которые он находит в вашем пути, так что, если вы имели java.exe в C: \ Windows она будет отображаться под с \ System32 \ один.

РЕДАКТИРОВАТЬ

Я решил также включить опцию для пользователей XP, которые хотели бы функциональность без сторонних инструментов. Раймонд Чен написал командный сценарий в 90-байтовой программе «whereis» . Это хороший лайнер, который выполняет ту же задачу!

@for %%e in (%PATHEXT%) do @for %%i in (%1%%e) do @if NOT "%%~$PATH:i"=="" echo %%~$PATH:i 

Сохраните приведенный выше скрипт в файле .bat или .cmd, и вы можете запустить его из командной строки с именем файла в качестве аргумента. Это будет работать так, как вы ожидаете! (обратите внимание, если вы используете версию скрипта, не указывайте расширение, оно будет искать все исполняемые расширения для вас)

+1 Всегда предпочитайте нативное решение «где это возможно» :) Phoshi 15 лет назад 2
+1; никогда не знал об этой команде раньше! (И раньше я думал, что мне очень удобно работать с командной строкой!) John Rudy 15 лет назад 0
+1 для новичка. Он работает аналогично команде `find` в Unix (в отличие от команды` find` в DOS или Windows). Например, вы можете сделать `where -r \ users \ username \ documents * .xl *`. Dennis Williamson 15 лет назад 0
+1 спасибо за скрипт XP - я сохранил его как `where.bat` и он работает так же, как Vista! :) Bohemian 12 лет назад 0
Эквивалент * nix - это «который». «Где» - это скрипт на redhat, возможно, для людей, которые забывают, что это «which» на * nix barlop 10 лет назад 0
2

в каталоге c: \ windows \ system32 есть копия файла java.exe (путь, определенный в переменных среды). это тот, который появляется, когда вы набираете java.exe в командной строке, а не тот, который находится в c: \ program files \ java \ jre6 \ bin.

Вы не говорите. Я пытался использовать 'which.exe', чтобы найти его, но не смог. ripper234 15 лет назад 0
работает для меня. какие из них вы используете? quack quixote 15 лет назад 0
Мой, который является cygwin, который и который java выбрал java.exe в / system32, так что, какой бы вы ни использовали, вы можете быть околдованы. Phoshi 15 лет назад 2
Gnuwin32, который. ripper234 15 лет назад 0
Cygwin, который здесь тоже. (ведьма волосы 2?) quack quixote 15 лет назад 0