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

993
umop aplsdn

Когда я выполняю команду с тем же именем, что и внутренняя команда, вместо поиска по пути 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?

8

1 ответ на вопрос

12
Twisty Impersonator

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

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

"MKDIR" 

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

"MKDIR" -firstParam "C:\foobar\long file name.ext" 
В качестве альтернативы вы можете указать полный путь к программе mkdir, которую хотите вызвать. davidgo 9 лет назад 1
К сожалению, это не работает. Он создает новый файл с именем «.exe» в текущем каталоге. @davidgo Я могу указать весь путь, но это становится проблемой, когда я делюсь своим кодом с другими: не у всех есть mkdir, расположенный в `C: \ Program Files (x86) \ Git \ bin \ mkdir.exe`! umop aplsdn 9 лет назад 0
Окружение в двойных кавычках работает! Вам даже не нужно указывать расширение - просто `" mkdir "`. Спасибо! umop aplsdn 9 лет назад 2