Tôi có một which.bat trên 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
dơi này hoạt động tốt cho đến khi tôi tìm thấy một hành vi kỳ lạ ngày hôm nay.
Có một tập tin O:\temp\pfiles (x86)\mystuff.txt
, và PATH có nội dung:
PATH=O:\temp\pfiles (x86);D:\CmdUtils
Chạy which mystuff.txt
, tôi có rất lạ đầu ra:
\mystuff.txt was unexpected at this time.
Sau khi một số poking xung quanh , Tôi thấy rằng (x86)
trong tên thư mục gây ra thứ e vấn đề. Để khắc phục, tôi phải thêm dấu ngoặc kép để các echo
, như thế này:
echo %1 is found: "%~$PATH:1"
Nhược điểm của tinh chỉnh như vậy là rõ ràng: Các dấu ngoặc kép được in vào màn hình mà không phải luôn luôn mong muốn trong quan điểm của lập trình viên.
Có ai có thể giúp giải thích hành vi kỳ lạ này không?
Tôi thấy vấn đề này bởi vì trong env thực sự của mình, tôi có một số đường dẫn như C:\Program Files (x86)\Common Files\NetSarang
trong PATH, hiển thị chính xác cùng một triệu chứng.
Cảm ơn bạn đã cho tôi biết. '' where.exe'' là rất tốt. Tôi đã sử dụng which.bat từ Windows XP, nơi chưa có 'where.exe''. –
thông tin tốt ... nhưng nếu bạn đang tìm kiếm một 'thực thi' và không cung cấp phần mở rộng thì không hoạt động ... sử dụng 'where.exe' rồi ... hoặc 'which' nếu ou nằm trong linux ... hoặc chỉ cần cài đặt Cygwin và sử dụng 'which' ... hoạt động tuyệt vời !!! – ZEE