У меня есть which.bat на Windows 7,
@echo off
REM This bat searches a file in PATH list to see whether a file can be found.
REM If found, it shows the file's full path.
REM which.bat gcc.exe
REM shows
REM gcc.exe is found: D:\GMU\MinGW2\bin\gcc.exe
REM
REM Note: Filename extension is significant in the search. E.g. If you run
REM which.bat gcc
REM gcc.exe will not be matched.
IF "%1" == "" goto END
IF "%~$PATH:1" == "" (
echo %1 is not found in any directories from PATH env-var.
) ELSE (
echo %1 is found: %~$PATH:1
)
:END
Эта летучая мышь работает хорошо, пока я не нашел странное поведение сегодня.
Существует файл O:\temp\pfiles (x86)\mystuff.txt
и PATH имеет содержание:
PATH=O:\temp\pfiles (x86);D:\CmdUtils
Запуск which mystuff.txt
, я получил очень странный выход:
\mystuff.txt was unexpected at this time.
После некоторых ковыряться , Я обнаружил, что (x86)
в имени каталога вызывает th e проблема. Чтобы решить эту проблему, я должен добавить кавычки в echo
, как это:
echo %1 is found: "%~$PATH:1"
Недостаток такой подстройки очевидна: Котировки выводятся на экран, который не всегда нужные, по мнению программиста.
Может ли кто-нибудь помочь объяснить это странное поведение?
Я нахожу эту проблему, потому что в моем реальном env у меня есть некоторые пути, такие как C:\Program Files (x86)\Common Files\NetSarang
в PATH, которые показывают точно такой же симптом.
Благодарим Вас за давая мне знать. '' where.exe'' отлично. Я использовал which.bat с Windows XP, где еще нет '' where.exe''. –
хорошая информация ... но если вы ищете «исполняемый файл» и не предоставляете расширение, то не работает ... используйте «where.exe» then ... или «which», если ou находятся в linux ... или просто установите Cygwin и используйте «который» ... отлично работает !!! – ZEE