Wymuś użycie systemu Windows w pliku PATH zamiast wewnętrznego polecenia CMD.EXE

9

Kiedy wykonuję polecenie o tej samej nazwie co polecenie wewnętrzne, zamiast szukać ścieżki Windows używa po prostu polecenia znalezionego w CMD.EXE.

Na przykład MKDIR to wbudowane polecenie wewnętrzne CMD.EXE. Nie obsługuje tych samych opcji co wersja Unix (np. -pI --help). Jeśli skorzystam z tych opcji, Windows po prostu utworzy pliki o nazwie -p lub --help, mimo że mam wersję GNU mkdir zainstalowaną w katalogu na mojej ścieżce.

Staje się to problemem podczas pracy z niektórymi programami, które używają mkdir przez terminal. Na przykład plik gulp dla prozy zawiera trzy mkdir -ppolecenia, które tworzą folder -pw katalogu roboczym, a następnie generują błędy. Muszę ręcznie edytować plik gulpfile, tak aby korzystał z zainstalowanego pliku mkdir.exe , co utrudnia mi udostępnianie widelca na wielu platformach.

Jak mogę zmusić powłokę systemu Windows do używania mkdir.exeznalezionej w PATH zamiast CMD.EXE?

umop aplsdn
źródło

Odpowiedzi:

14

Jak zmusić powłokę systemu Windows do używania pliku mkdir.exe znajdującego się w PATH zamiast CMD.EXE?

Otocz nazwę pliku wykonywalnego w cudzysłowie. Na przykład:

"MKDIR"

Zmusza to system Windows do szukania pliku wykonywalnego zamiast uruchamiania wewnętrznego polecenia. Jeśli masz parametry, które również wymagają podwójnych cudzysłowów, użyj tej składni:

"MKDIR" -firstParam "C:\foobar\long file name.ext"
Mówię: Przywróć Monikę
źródło
1
Alternatywnie powinieneś być w stanie określić pełną ścieżkę do programu mkdir, który chcesz wywołać.
davidgo
Niestety to nie działa. W ten sposób tworzy nowy plik o nazwie „.exe” w bieżącym katalogu. @davidgo Mogę określić całą ścieżkę, ale staje się to problemem podczas udostępniania mojego kodu innym: nie każdy ma w sobie mkdir C:\Program Files (x86)\Git\bin\mkdir.exe!
umop aplsdn
2
Działa otaczanie w podwójnych cudzysłowach! Nie musisz nawet określać rozszerzenia - po prostu "mkdir". Dzięki!
umop aplsdn