O que faria com que uma extensão EXE fosse obrigatória na linha de comando e como ela pode ser resolvida no shell atual?
Eu tive um caminho longo. > 2048 caracteres e instalei um programa, nodejs, que foi adicionado a esse caminho. E então as coisas ficaram um pouco malucas. Eu tive um problema que algumas pessoas parecem chegar em algum momento quando o caminho é > 2048 char. A maior parte do meu caminho foi removido. (Eu ainda tenho alguns antigos cmd shells com o meu caminho, então isso não é um grande problema, então eu salvei meu caminho antigo em um arquivo) E a variável de ambiente windir tem (acho que configurada para nada), no registro. E eu não conseguia nem abrir a janela de variáveis de ambiente (este é um sintoma que as pessoas podem obter quando o seu caminho é > 2048 char e perdem a sua variável windir). Então usei o setx para criar windir=c:\windows
e abri a janela de variáveis de ambiente e fixei meu PATH para o que era. E agora cmd prompt janelas que eu abro estão bem.
Mas eu ainda tenho algumas janelas de prompt do cmd antigas antes de consertá-lo, e eu entendo que o caminho está encurtado nelas, e eu entendo que não há nenhum conjunto de variáveis windir, mas eu ainda vejo um resultado bizarro nelas explicar. E que eu gostaria de poder consertar dentro daquelas janelas cmd.
Parece que preciso colocar o EXE após um executável para executá-lo.
C:\crp>path
PATH=C:\Ruby21\bin;C:\Program Files (x86)\IDM Computer Solutions\UltraEdit\;C:\Program Files (x86)\IDM Computer Solutions\UltraCompare\;C:\Program Files (x86)\Nmap;C:\Program Files (x86)\smartmontools\bin;C:\ProgramData\chocolatey\bin;C:\Users\user\AppData
\Roaming\npm
C:\crp>cd \windows\system32
C:\Windows\System32>ping
'ping' is not recognized as an internal or external command,
operable program or batch file.
C:\Windows\System32>ping.exe
Usage: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
......
C:\Windows\System32>set path=
C:\Windows\System32>ping.exe
Usage: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
.....
C:\Windows\System32>ping
'ping' is not recognized as an internal or external command,
operable program or batch file.
C:\Windows\System32>
e
C:\Windows\System32>ping
'ping' is not recognized as an internal or external command,
operable program or batch file.
C:\Windows\System32>set windir=c:\windows
C:\Windows\System32>echo %windir%
c:\windows
C:\Windows\System32>ping
'ping' is not recognized as an internal or external command,
operable program or batch file.
C:\Windows\System32>ping.exe
Usage: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
O engraçado é que eu acho que o que resolveu para futuros prompts de cmd foi configurar o windir permanentemente, ou seja, com setx (então (fui para a janela de variáveis do ambiente e consertei o caminho).
Eu poderia consertar o caminho dentro de uma sessão cmd quebrada, eu posso até mesmo consertar o windir naquela sessão cmd, eu sei que nenhum dos dois deve ajudar, mas tornar obrigatório colocar o EXE no final dos nomes de arquivo. Então eu não vejo a causa ... ou como consertar isso para uma sessão cmd em particular.
As novas janelas do cmd estão bem .. Mas para entender o que está acontecendo, quero poder corrigi-lo de dentro de uma sessão cmd interrompida. E se não, então eu gostaria de saber por que não pode ser corrigido dentro dele.
Adicionado
Relevante para o post de Dmitry
C:\Windows\System32>echo %PATHEXT%
%PATHEXT%;.RB;.RBW
De fato, vejo que o .EXE não está listado e é um pouco estranho que o literal% PATHEXT% esteja listado nele. Parece quase infinitamente recursivo (se o DOS lesse a recursão / recursão, o que não aconteceria)!