O Windows 7 CLI não reconhece comandos sem especificar a extensão

2

Eu aparentemente fui e estraguei meu sistema de uma maneira estranha. O prompt cmd do Windows 7 não está mais reconhecendo nenhum arquivo executável ou em lote, a menos que eu digite explicitamente sua extensão.

C:\Users\Current> xcopy /?
'xcopy' is not recognized as an internal or external command,
operable program or batch file.

Isso é corrigido ao qualificá-lo com a extensão .exe :

C:\Users\Current> xcopy.exe /?
< ... all of the help for xcopy shows below, as expected ... >

Presumi que fizesse algo para interromper meu caminho quando o xcopy parou de funcionar, mas defini-lo de volta para um conjunto mínimo de coisas que o Windows normalmente inclui não o corrigiu. Meu caminho é atualmente o seguinte:

C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\KC\Scripts

A única coisa fora do padrão é C:\KC\Scripts , que é especificada no meu caminho do usuário. Não acredito que a string esteja malformada de alguma forma. Isso aconteceu recentemente depois de instalar o Ruby através do RubyInstaller do Windows e selecionando para ele atualizar automaticamente o meu caminho. Desde então, removi qualquer coisa do caminho, mas o que eu postei acima, mas o erro persiste.

Alguém está ciente de uma razão pela qual o Windows pararia de reconhecer programas e arquivos em lote na CLI sem explicitamente especificar que eles são arquivos .exe ou .bat?

    
por KChaloux 20.01.2015 / 17:44

2 respostas

1

Possíveis motivos para o erro de shell do Windows cmd

'foo' is not recognized as an internal or external command,
operable program or batch file

Duas variáveis de ambiente são ligadas de perto com a execução do comando shell: PATH e PATHEXT .

  • A variável de ambiente PATH define o caminho de pesquisa do Windows, ou seja, uma lista de diretórios pesquisados quando o shell de comando tenta localizar um arquivo executável .
  • A variável de ambiente PATHEXT define a lista de extensões de arquivos verificadas pelo Windows ao pesquisar por um arquivo executável .

E qualquer extensão de arquivo pode ser considerada executável : se uma extensão de arquivo estiver associada a um aplicativo, o shell executará o aplicativo apropriado. Aqui está associado significa o mesmo que é definido como ação de shell padrão no registro do Windows para uma extensão de arquivo específica.

Aqui está uma boa introdução a todo este tópico: O Shell de Comando do Windows NT

    
por 20.01.2015 / 20:56
0

Eu experimentei isso com um arquivo em lote que uso para copiar um aplicativo front-end do Access para as máquinas locais do usuário. Seu ambiente é uma mistura do Windows 7 & Máquinas de 8 e 32-64 bits.

Notei que o xcopy.exe estava nas pastas System32 e SysWOW64 e imaginei se havia algum conflito.

Eu copiei o xcopy.exe para a pasta onde o arquivo de lote reside e agora parece estar funcionando.

    
por 13.04.2015 / 23:44