Parece que você precisa ser mais específico. Ele funciona para arquivos BAT e arquivos EXE. O que pode estar acontecendo é que você está, coincidentemente, usando um nome que já foi usado por algo anterior em seu caminho.
Se você tiver PATH = C: \ 1; C: \ 2; C: \ 3
E você faz um C: \ 3 \ foo.BAT
Mas já existe um C: \ 1 \ foo.EXE
Então, quando você digitar "foo", ele irá pressionar c: \ 1 \ foo.exe antes de encontrar c: \ 3 \ foo.bat.
Isso tem me atormentado de vez em quando.
Acho o comando "which" útil nessas situações.