Заставить Windows использовать .EXE в PATH вместо внутренней команды CMD.EXE


8

Когда я выполняю команду с тем же именем, что и внутренняя команда, вместо поиска по пути Windows просто использует файл, найденный в CMD.EXE.

Например, MKDIR - это встроенная внутренняя команда CMD.EXE. Он не поддерживает те же опции, что и версия Unix (например, -pи --help). Если я использую эти параметры, Windows просто создаст файлы с именами -p или --help, хотя у меня установлена ​​версия GNU mkdir в каталоге на моем пути.

Это становится проблемой при работе с некоторыми программами, которые используют mkdir через терминал. Например, gulpfile for prose содержит три mkdir -pкоманды, которые создают папку -pв рабочем каталоге и затем выдают ошибки. Я должен вручную отредактировать gulpfile так, чтобы он использовал установленный mkdir.exe , что затрудняет мне совместное использование моего кроссплатформенного форка.

Как заставить оболочку Windows использовать mkdir.exeнайденную в PATH, а не CMD.EXE?

Ответы:


13

Как я могу заставить оболочку Windows использовать mkdir.exe из PATH, а не CMD.EXE?

Окружите имя исполняемого файла в двойных кавычках. Например:

"MKDIR"

Это заставляет Windows искать ваш исполняемый файл вместо выполнения внутренней команды. Если у вас есть параметры, которые также требуют двойных кавычек, используйте этот синтаксис:

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

1
В качестве альтернативы вы можете указать полный путь к программе mkdir, которую хотите вызвать.
Давидго

К сожалению, это не работает. Он создает новый файл с именем «.exe» в текущем каталоге. @davidgo Я могу указать весь путь, но это становится проблемой, когда я делюсь своим кодом с другими: не у всех есть mkdir, расположенный в C:\Program Files (x86)\Git\bin\mkdir.exe!
umop aplsdn

2
Окружение в двойных кавычках работает! Вам даже не нужно указывать расширение - просто "mkdir". Спасибо!
umop aplsdn
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.