Forçar o Windows a usar .EXE no PATH em vez do comando interno do CMD.EXE


9

Quando executo um comando com o mesmo nome que um comando interno, em vez de pesquisar no caminho, o Windows simplesmente usa o encontrado no CMD.EXE.

Por exemplo, MKDIR é um comando interno incorporado CMD.EXE. Ele não suporta as mesmas opções da versão Unix (por exemplo, -pe --help). Se eu usar essas opções, o Windows simplesmente criará os arquivos -p ou --help, mesmo que eu tenha a versão GNU do mkdir instalada em um diretório no meu caminho.

Isso se torna um problema ao trabalhar com certos programas que usam o mkdir através do terminal. Por exemplo, o gulpfile para prosa contém três mkdir -pcomandos que criam uma pasta -pno diretório de trabalho e lançam erros. Eu tenho que editar manualmente o gulpfile para que ele use o mkdir.exe instalado , o que dificulta o compartilhamento de minha plataforma cruzada de garfo.

Como forçar o shell do Windows a usar o mkdir.exeencontrado no PATH em vez do CMD.EXE?

Respostas:


14

Como forçar o shell do Windows a usar o mkdir.exe encontrado no PATH em vez do CMD.EXE?

Coloque o nome do executável entre aspas duplas. Por exemplo:

"MKDIR"

Isso força o Windows a procurar seu executável em vez de executar o comando interno. Se você possui parâmetros que também exigem aspas duplas, use esta sintaxe:

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

11
Como alternativa, você deve poder especificar o caminho completo para o programa mkdir que deseja chamar.
Davidgo

Infelizmente, isso não funciona. O que ele faz é criar um novo arquivo chamado ".exe" no diretório atual. @davidgo Posso especificar todo o caminho, mas isso se torna um problema ao compartilhar meu código com outras pessoas: nem todo mundo tem o mkdir localizado C:\Program Files (x86)\Git\bin\mkdir.exe!
umop aplsdn

2
Em torno de aspas duplas funciona! Você nem precisa especificar a extensão - apenas "mkdir". Obrigado!
Umop aplsdn
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.