Erzwingen Sie, dass Windows .EXE für PATH anstelle des internen Befehls CMD.EXE verwendet

9

Wenn ich einen Befehl mit demselben Namen wie einen internen Befehl ausführe, verwendet Windows anstelle der Suche im Pfad einfach den in CMD.EXE gefundenen.

Zum Beispiel MKDIR ist ein interner Befehl eingebaut in CMD.EXE. Es werden nicht dieselben Optionen wie in der Unix-Version (z . B. -pund --help) unterstützt. Wenn ich diese Optionen verwende, erstellt Windows einfach Dateien mit dem Namen -p oder --help , obwohl ich die GNU-Version von mkdir in einem Verzeichnis in meinem Pfad installiert habe.

Dies wird zu einem Problem, wenn Sie mit bestimmten Programmen arbeiten, die mkdir über das Terminal verwenden. Zum Beispiel enthält die Gulpfile für Prosa drei mkdir -pBefehle, die einen Ordner -pim Arbeitsverzeichnis erstellen und dann Fehler auslösen . Ich muss die gulpfile manuell so bearbeiten, dass sie die installierte Datei mkdir.exe verwendet , was es für mich schwieriger macht, meine Gabel plattformübergreifend freizugeben .

Wie kann ich die Windows-Shell zwingen, die mkdir.exein PATH gefundene anstelle von CMD.EXE zu verwenden?

umop aplsdn
quelle

Antworten:

14

Wie kann ich die Windows-Shell zwingen, die in PATH gefundene Datei mkdir.exe anstelle von CMD.EXE zu verwenden?

Umgeben Sie den Namen der ausführbaren Datei in doppelte Anführungszeichen. Zum Beispiel:

"MKDIR"

Dies zwingt Windows, nach Ihrer ausführbaren Datei zu suchen, anstatt den internen Befehl auszuführen. Wenn Sie Parameter haben, für die auch doppelte Anführungszeichen erforderlich sind, verwenden Sie diese Syntax:

"MKDIR" -firstParam "C:\foobar\long file name.ext"
Ich sage Reinstate Monica
quelle
1
Alternativ sollten Sie in der Lage sein, den vollständigen Pfad zum mkdir-Programm anzugeben, das Sie aufrufen möchten.
Davidgo
Leider funktioniert das nicht. Es erstellt eine neue Datei mit dem Namen ".exe" im aktuellen Verzeichnis. @davidgo Ich kann den gesamten Pfad angeben, aber das wird zu einem Problem beim Teilen meines Codes mit anderen: Nicht jeder hat mkdir in C:\Program Files (x86)\Git\bin\mkdir.exe!
Umop Aplsdn
2
Umgeben in doppelten Anführungszeichen funktioniert! Sie müssen nicht einmal die Erweiterung angeben - nur "mkdir". Vielen Dank!
Umop Aplsdn