A situação é que eu tenho um aplicativo portátil que precisa ter definido a variável de ambiente. 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 a execução sem parâmetros), apaguei a extensão ".exe" do arquivo, mas não posso executá-lo não apenas pelo mouse (o que desejo), mas também pelo start
comando .
Existe alguma maneira de executar esse arquivo executável que não tem extensão exe?
windows
command-line
rsk82
fonte
fonte
Respostas:
Sim - simplesmente digitar o nome completo do arquivo do programa geralmente funciona. (O
.exe
requisito existe apenas no shell da GUI.)No entanto, pode ser que o arquivo precise de uma extensão - portanto, se você não conseguir
MyProgram
executar, renomeie-o paraMyProgram.notexe
ouMyProgram.lol
tente novamente.fonte
.exe
para.zip
, tentei abri-lo através do cmd.exe e ainda executava o auto-extrator em vez de abrir o WinZip.MZ
será executada pelo cmd, verifique abaixoQualquer arquivo com qualquer extensão e os dois primeiros bytes
MZ
serão tratados como um EXE.Tente o seguinte:
a.txt
arquivo,MZ
, salve.cmd
, vá para a pastaa.txt
e veja a mensagem de erro.Substitua
MZ
porMS
e tente novamente - desta vez, o bloco de notas será executado com o arquivo aberto.fonte
'' is not recognized as an internal or external command, operable program or batch file.
erroThis version of D:\test.txt is not compatible with the version of Windows you're running. Check your computer's system information and then contact the software publisher.
anteriormente eu usei Windows 10 LTSB no trabalho e não funcionou'file' is not recognized
erro.Tentei executar o processo do arquivo sem a extensão .exe. Quando não consegui fazê-lo no cmd.exe, experimente alguns comandos do PowerShell. Aqui está um:
Processo inicial
A documentação diz sobre sintaxe padrão e UseShellExecute. Com apenas:
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:
Meu programa foi iniciado e gravou a saída no console. Isso foi o suficiente para mim, porque eu precisava apenas para fins de teste.
fonte