Ich habe einen which.bat auf 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
Diese Fledermaus funktioniert gut, bis ich ein seltsames Verhalten heute finden.
Es gibt eine Datei O:\temp\pfiles (x86)\mystuff.txt
und PATH hat Inhalt:
PATH=O:\temp\pfiles (x86);D:\CmdUtils
which mystuff.txt
Rennen, bekam ich die sehr seltsam Ausgang:
\mystuff.txt was unexpected at this time.
Nach einigem Stochern Finde ich, dass der (x86)
im Verzeichnisnamen th verursacht Das Problem. Um dieses Problem zu umgehen habe ich Zitate fügen dem echo
, wie folgt aus:
echo %1 is found: "%~$PATH:1"
Der Nachteil solcher zwicken ist offensichtlich: Die Zitate auf Bildschirm gedruckt werden, die nicht immer in der Programmierer Meinung erwünscht ist.
Kann jemand helfen, dieses merkwürdige Verhalten zu erklären?
Ich finde dieses Problem, weil in meinem realen env, habe ich einige Wege wie C:\Program Files (x86)\Common Files\NetSarang
in PATH, die genau das gleiche Symptom zeigen.
Danke, dass Sie mich kennen. '' where.exe'' ist großartig. Ich benutze which.bat seit Windows XP, wo es noch keine '' wher.exe'' gibt. –
gute Info ... aber wenn Sie für eine 'ausführbare Datei' suchen und keine Erweiterung zur Verfügung stellen, dann funktioniert das nicht ... benutzen Sie 'wher.exe' dann ... oder 'was' wenn Sie in Linux sind ... oder installiere einfach Cygwin und benutze 'which' ... funktioniert super !!! – ZEE