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?

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?

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:\windowse 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 PATHEXTa 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

informação relacionada