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 que foi longo. > 2.048 caracteres, e instalei um programa, nodejs, que foi adicionado a esse caminho. E então as coisas ficaram um pouco complicadas. Eu tive um problema que algumas pessoas parecem ter em algum momento quando seu caminho é> 2.048 caracteres. A maior parte do meu caminho foi removida. (Eu ainda tenho alguns shells cmd antigos com meu caminho, então isso não é um grande problema, então salvei meu caminho antigo em um arquivo) E a variável de ambiente windir foi (acho que definida como nada) no registro. E não consegui nem abrir a janela de variáveis de ambiente (este é um sintoma que as pessoas podem ter quando seu caminho é> 2048 caracteres e perdem sua variável windir). Então usei setx para criar windir=c:\windows
e abri a janela de variáveis de ambiente e fixei meu PATH no que era. E agora as janelas de prompt do cmd que eu abro estão bem.
Mas ainda tenho algumas janelas de prompt do cmd mais antigas antes de corrigi-las e entendo que o caminho é encurtado nelas e entendo que não há nenhuma variável windir definida, mas ainda vejo um resultado bizarro nelas que não consigo explicar. E isso eu gostaria de poder consertar nessas janelas cmd.
Parece que preciso colocar o EXE depois de um executável para poder 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 acho que o que resolveu isso para futuros prompts de cmd foi configurar o windir permanentemente, ou seja, com setx (então (foi para a janela de variáveis de ambiente e corrigi o caminho).
Eu poderia consertar o caminho em uma sessão de cmd interrompida, posso até consertar o windir naquela sessão de cmd, sei que nada disso deve ajudar, mas está tornando obrigatório colocar EXE no final dos nomes de arquivos. Portanto, não vejo a causa .. ou como corrigi-la para uma sessão específica do cmd.
Novas janelas de cmd estão bem. Mas, para entender o que está acontecendo, quero ser capaz de corrigi-lo a partir de uma sessão de cmd interrompida. E se não, gostaria de saber por que não pode ser consertado nele.
Adicionado
Relevante para a postagem de Dmitry
C:\Windows\System32>echo %PATHEXT%
%PATHEXT%;.RB;.RBW
Na verdade, vejo que .EXE não está listado e é um pouco estranho que o literal% PATHEXT% esteja listado lá. Parece quase infinitamente recursivo (se o DOS lidasse com recursão/recursão ali, o que não aconteceria)!
Responder1
Você verificou PATHEXT
a variável de ambiente? Ele lista extensões consideradas executáveis. O meu é assim:
PATHEXT=.COM;.EXE;.BAT;.CMD;.LNK;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.AU3
Aliás, há um ótimo editor de ambiente:Editor de ambiente rápido