Forcer Windows à utiliser .EXE sur PATH plutôt que la commande interne CMD.EXE

9

Lorsque j'exécute une commande avec le même nom qu'une commande interne, au lieu de rechercher dans le chemin d'accès, Windows utilise simplement celui trouvé dans CMD.EXE.

Par exemple, MKDIR est une commande interne intégrée à CMD.EXE. Il ne prend pas en charge les mêmes options que la version Unix (par exemple -pet --help). Si j'utilise ces options, Windows créera simplement des fichiers nommés -p ou --help même si la version GNU de mkdir est installée dans un répertoire de mon chemin.

Cela devient un problème lorsque vous travaillez avec certains programmes qui utilisent mkdir via le terminal. Par exemple, le gulpfile pour la prose contient trois mkdir -pcommandes qui créent un dossier -pdans le répertoire de travail, puis lèvent des erreurs. Je dois modifier manuellement le gulpfile de telle sorte qu'il utilise le mkdir.exe installé , ce qui rend plus difficile pour moi de partager ma fourchette multiplateforme.

Comment puis-je forcer le shell Windows à utiliser celui mkdir.exetrouvé dans PATH plutôt que CMD.EXE?

umop aplsdn
la source

Réponses:

14

Comment puis-je forcer le shell Windows à utiliser le mkdir.exe trouvé dans PATH plutôt que CMD.EXE?

Entourez le nom de l'exécutable entre guillemets. Par exemple:

"MKDIR"

Cela oblige Windows à rechercher votre exécutable au lieu d'exécuter la commande interne. Si vous avez des paramètres qui nécessitent également des guillemets doubles, utilisez cette syntaxe:

"MKDIR" -firstParam "C:\foobar\long file name.ext"
Je dis Rétablir Monica
la source
1
Alternativement, vous devriez être en mesure de spécifier le chemin d'accès complet au programme mkdir que vous souhaitez appeler.
davidgo
Malheureusement ça ne fonctionne pas. Ce qu'il fait, c'est qu'il crée un nouveau fichier nommé ".exe" dans le répertoire courant. @davidgo Je peux spécifier le chemin complet, mais cela devient un problème avec le partage de mon code avec les autres: tout le monde n'a pas mkdir situé dans C:\Program Files (x86)\Git\bin\mkdir.exe!
umop aplsdn
2
Entouré de guillemets doubles fonctionne! Vous n'avez même pas besoin de spécifier l'extension - juste "mkdir". Merci!
umop aplsdn