Buộc Windows sử dụng .EXE trên PATH thay vì lệnh nội bộ CMD.EXE


9

Khi tôi thực thi một lệnh có cùng tên với một lệnh nội bộ, thay vì tìm kiếm trong đường dẫn, Windows chỉ đơn giản sử dụng một lệnh được tìm thấy trong CMD.EXE.

Ví dụ, MKDIR là một lệnh nội bộ được tích hợp CMD.EXE. Nó không hỗ trợ các tùy chọn giống như phiên bản Unix (ví dụ -p--help). Nếu tôi sử dụng các tùy chọn này, Windows sẽ chỉ tạo các tệp có tên -p hoặc --help mặc dù tôi đã cài đặt phiên bản GNU của mkdir trong một thư mục trong đường dẫn của tôi.

Điều này trở thành một vấn đề khi làm việc với các chương trình nhất định sử dụng mkdir thông qua thiết bị đầu cuối. Ví dụ, gulpfile cho văn xuôi chứa ba mkdir -plệnh, tạo một thư mục -ptrong thư mục làm việc và sau đó ném lỗi. Tôi phải chỉnh sửa thủ công gulpfile để nó sử dụng mkdir.exe đã cài đặt , điều này khiến tôi khó chia sẻ nền tảng ngã ba của mình hơn.

Làm cách nào tôi có thể buộc shell Windows sử dụng mkdir.exetìm thấy trong PATH thay vì CMD.EXE?

Câu trả lời:


14

Làm cách nào tôi có thể buộc trình bao Windows sử dụng mkdir.exe được tìm thấy trong PATH thay vì CMD.EXE?

Bao quanh tên thực thi trong dấu ngoặc kép. Ví dụ:

"MKDIR"

Điều này buộc Windows phải tìm kiếm tệp thực thi của bạn thay vì chạy lệnh nội bộ. Nếu bạn có các tham số cũng yêu cầu dấu ngoặc kép, hãy sử dụng cú pháp này:

"MKDIR" -firstParam "C:\foobar\long file name.ext"

1
Ngoài ra, bạn sẽ có thể chỉ định đường dẫn đầy đủ đến chương trình mkdir mà bạn muốn gọi.
davidgo

Thật không may, điều này không làm việc. Những gì nó làm là nó tạo ra một tệp mới có tên ".exe" trong thư mục hiện tại. @davidgo Tôi có thể chỉ định toàn bộ đường dẫn, nhưng điều đó trở thành một vấn đề với việc chia sẻ mã của tôi với người khác: không phải ai cũng có mkdir ở C:\Program Files (x86)\Git\bin\mkdir.exe!
umop aplsdn

2
Xung quanh trong báo giá kép hoạt động! Bạn thậm chí không cần chỉ định tiện ích mở rộng - chỉ "mkdir". Cảm ơn!
umop aplsdn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.