Forzar que Windows use .EXE en PATH en lugar del comando interno CMD.EXE


9

Cuando ejecuto un comando con el mismo nombre que un comando interno, en lugar de buscar en la ruta, Windows simplemente usa el que se encuentra en CMD.EXE.

Por ejemplo, MKDIR es un comando interno integrado CMD.EXE. No admite las mismas opciones que la versión Unix (por ejemplo, -py --help). Si uso estas opciones, Windows simplemente creará archivos llamados -p o --help aunque tenga la versión GNU de mkdir instalada en un directorio en mi ruta.

Esto se convierte en un problema cuando se trabaja con ciertos programas que usan mkdir a través del terminal. Por ejemplo, el gulpfile for prose contiene tres mkdir -pcomandos que crean una carpeta -pen el directorio de trabajo y luego arrojan errores. Tengo que editar manualmente el gulpfile de modo que use el mkdir.exe instalado , lo que me dificulta compartir mi plataforma multiplataforma.

¿Cómo puedo forzar al shell de Windows a usar el mkdir.exeencontrado en PATH en lugar de CMD.EXE?

Respuestas:


14

¿Cómo puedo forzar que el shell de Windows use el mkdir.exe que se encuentra en PATH en lugar de CMD.EXE?

Encierre el nombre del ejecutable entre comillas dobles. Por ejemplo:

"MKDIR"

Esto obliga a Windows a buscar su ejecutable en lugar de ejecutar el comando interno. Si tiene parámetros que también requieren comillas dobles, use esta sintaxis:

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

1
Alternativamente, debería poder especificar la ruta completa al programa mkdir al que desea llamar.
davidgo

Por desgracia, esto no funciona. Lo que hace es crear un nuevo archivo llamado ".exe" en el directorio actual. @davidgo Puedo especificar la ruta completa, pero eso se convierte en un problema al compartir mi código con otros: ¡no todos tienen mkdir ubicado C:\Program Files (x86)\Git\bin\mkdir.exe!
umop aplsdn

2
Rodeado de comillas dobles funciona! Ni siquiera necesita especificar la extensión, solo "mkdir". ¡Gracias!
umop aplsdn
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.