como executar um arquivo executável sem extensão EXE usando o script CMD?

18

A situação é que eu tenho um aplicativo portátil que precisa ter uma variável de ambiente definida. De outra forma, ele tenta definir suas configurações no diretório de dados do programa do usuário.

Para evitar a execução do executável no modo não portátil (para evitar que ele seja executado sem nenhum parâmetro) eu apaguei a extensão ".exe" do arquivo, mas não consigo executá-lo não apenas pelo mouse (que eu quero), mas também através do comando start .

Existe alguma maneira de executar esse arquivo executável que não tem extensão exe?

    
por rsk82 15.07.2013 / 12:26

3 respostas

12

Sim - simplesmente inserir o nome completo do programa geralmente funciona. (O requisito .exe existe apenas no shell da GUI.)

( pode ser que o arquivo precise de uma extensão - portanto, se você não conseguir executar MyProgram , renomeie-o para MyProgram.notexe ou MyProgram.lol e tente novamente.

    
por 15.07.2013 / 12:34
16

Qualquer arquivo com qualquer extensão e os primeiros dois bytes MZ serão tratados como um EXE.

Tente seguir:

  1. Crie um novo arquivo a.txt ,
  2. Digite MZ , salve-o.
  3. Abra cmd , vá para a pasta dele
  4. Digite a.txt e veja a mensagem de erro.

Substitua MZ por MS e tente novamente - desta vez, o bloco de notas será executado com o arquivo aberto.

    
por 19.12.2013 / 13:44
2

Eu tentei executar o processo a partir do arquivo sem a extensão .exe. Quando eu não consegui fazer isso de cmd.exe eu dou uma tentativa alguns comandos do PowerShell. Aqui está um:

Iniciar processo

A documentação diz sobre Sintaxe padrão e UseShellExecute. Com apenas:

Start-Process -FilePath .\my-program -Wait -NoNewWindow

o comando usa a sintaxe UseShellExecute e retorna erro sobre o aplicativo não associado a esse tipo de arquivo. Para forçar a sintaxe padrão, adicionei o parâmetro que o UseShellExecute não possui:

Start-Process -FilePath .\my-program -Wait -RedirectStandardError ./error.txt -NoNewWindow

Meu programa foi iniciado e escreveu a saída para o console. Isso foi o suficiente para mim, porque eu precisava apenas para fins de teste.

    
por 01.06.2017 / 14:28