"Registre" um .exe para que você possa executá-lo em qualquer linha de comando no Windows

152

Como você pode tornar um arquivo .exe acessível em qualquer local na janela de comando do Windows? Existe alguma entrada do registro que precisa ser inserida?

HK1
fonte
6
superuser.com
David Heffernan

Respostas:

97

Você precisa garantir que o exe esteja em uma pasta que esteja na PATHvariável de ambiente.

Você pode fazer isso instalando-o em uma pasta que já está no PATHou adicionando sua pasta ao PATH.

Você pode fazer com que o instalador faça isso - mas será necessário reiniciar a máquina para garantir que ela seja retirada.

ChrisF
fonte
Essa resposta é quase sempre a errada. No mínimo, é incompleto. Especificamente, essa abordagem funciona bem para INSTALAR, mas não é boa para desinstalar. A maioria dos desinstaladores eliminará toda a variável PATH ao desinstalar o aplicativo associado a isso. Portanto, se você escrever uma ação de instalação para adicionar o diretório ao PATH, faça uma ação de instalação PERSONALIZADA que não seja desinstalada automaticamente pelo pacote de remoção genérico. Em seguida, combine essa etapa de instalação personalizada com uma etapa de desinstalação que remove apenas o diretório da variável PATH.
Kim Gentes
21
@KimGentes bem, isso é um problema com o desinstalador. Um bom desinstalador deve arrumar bem. Não faz a resposta errada.
ChrisF
3
Eu concordo .. é um problema com o instalador. Mas como todos os instaladores fazem isso com variáveis ​​(eles não analisam nem extraem partes das entradas do registro ou VARIÁVEIS ENV), parece prudente explicá-lo. Se seguirmos as instruções exatamente, elas sempre encontrarão esse problema, o que significa que a solução provavelmente sempre deve incluir essa ressalva. Nenhum pacote de instalação cuida da instalação e desinstalação de seções das entradas do Registro ou variáveis ​​ENV que eu conheço, embora, por favor, deixe-me saber se há algumas que eu não conheço.
Kim Gentes
Em vez de "instalar" o ambiente, use um arquivo em lotes com o comando SETX: SETX PATH "C: \ Windows" ----- e pronto.
21415 Stavm
3
O SETX também é perigoso porque possui um limite de comprimento muito menor que a própria variável PATH e truncará em vez de falhar.
Ben Voigt
48

Você pode adicionar a seguinte chave do Registro :

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\myexe.exe

Nesta chave, adicione o valor padrão da string que contém o caminho para o arquivo exe.

Andreas Rejbrand
fonte
1
Sherdim @: eu duvido disso. No entanto, ele sempre funcionou com o startcomando, para que você possa digitar start myexeum prompt do cmd.exe. Mas por myexesi só não deve funcionar, eu acho (a menos que você esteja no diretório myexeou esse diretório esteja na PATHvariável de ambiente).
Andreas Rejbrand
Simplesmente criei um myprog.cmdarquivo pequeno com o seguinte conteúdo: @START myprog.exe %*Isso chama a App Pathsentrada myprog.exee passa todos os argumentos de comando. O arquivo deve ser criado em algum lugar acessível emPATH
Stavr00
1
@sherdim @ andreas-rejbrand Posso confirmar que isso não funciona no Windows 10 se o myexe não estiver PATH. start myexefunciona com essa alteração do registro, sem adicionar o myexe ao PATH.
Davenpcj
@davenpcj: De fato. A chave do registro que mencionei está relacionada ao shell do Windows, não ao prompt de comando. Assim start myappfunciona, assim como o Win + R myapp, mas não é simples myappno cmd.exe.
Andreas Rejbrand
1
Essa chave funciona para ser executada no Explorer.exe, se você tentar no CMD.exe, ela não foi encontrada.
prampe 17/04
41

Você deve colocar .exeo caminho do seu arquivo no caminho variável do ambiente. Vá para "Meu computador -> propriedades -> avançado -> variáveis ​​de ambiente -> Caminho" e edite o caminho adicionando .exeo diretório do diretório.

Outra solução que eu pessoalmente prefiro é usar o RapidEE para uma edição de variáveis ​​mais suave.

darioo
fonte
39

Windows 10, 8.1, 8

Abra o menu Iniciar,

  1. Tipo Edit environment variables
  2. Abra a opção Edit the system environment variables
  3. Clique no Environment variables...botão
  4. Lá você vê duas caixas, na System Variablescaixa find pathvariable
  5. Clique Edit
  6. uma janela aparecer, clique em New
  7. Digite o caminho do diretório do seu arquivo .exeou batch( Diretório significa excluir o nome do arquivo do caminho)
  8. Clique Okem todas as janelas abertas e reinicie o sistema, reinicie o prompt de comando .
AmiNadimi
fonte
4
Esta é a única resposta que me ajudou. Eu acrescentaria que "reiniciar o sistema" não é necessário. Basta reiniciar o cmd seria suficiente.
Joffrey Baratheon
Com WinKey + R e digite SystemPropertiesAdvanced
prampe 17/04
29

Em vez de colocar o executável em um diretório no caminho, você deve criar um arquivo em lotes em um diretório no caminho que inicia o programa. Dessa forma, você não separa o executável dos arquivos de suporte e não adiciona outras coisas no mesmo diretório ao caminho sem intenção.

Esse arquivo em lote pode se parecer com o seguinte:

@echo off
start "" "C:\Program Files (x86)\Software\software.exe" %*
Ben Voigt
fonte
1
Você se importa em adicionar um exemplo de um arquivo em lote - seria bom?
Petermeissner
Eu sinto que esta é a melhor opção, não queria adicionar muitas coisas à variável de caminho. Vou editar neste exemplo de resposta desse arquivo em lotes.
Dino
1
O problema que estou tendo com isso é que ele inicia um novo shell. Eu estou tentando obter um binário cygwin para lançamento no mesmo shell, o que o faz se eu referenciá-lo diretamente comoC:\cygwin\bin\grep.exe
Johann
4
@ Johann: Retire o start "" e apenas comece com o caminho para o executável. Além disso, para uso no cygwin, você pode querer um script de shell do cygwin ou um link simbólico. Ou um apelido de shell.
Ben Voigt
Perfeito, obrigado! Concordo com suas outras opções para o cygwin, mas, neste caso, estou tentando usar um binário cygwin do powershell.
Johann
5

é incrível que não exista uma solução simples para uma tarefa tão simples no Windows, criei esse pequeno script cmd que você pode usar para definir aliases no Windows (as instruções estão no próprio cabeçalho do arquivo):

https://gist.github.com/benjamine/5992592

essa é praticamente a mesma abordagem usada por ferramentas como NPM ou ruby ​​gems para registrar comandos globais.

Benja
fonte
5

Digamos que meu exe é C: \ Arquivos de Programas \ AzCopy \ azcopy.exe

Comando / CMD / Lote

SET "PATH=C:\Program Files\AzCopy;%PATH%"

PowerShell

$env:path = $env:path + ";C:\Program Files\AzCopy"

Agora posso simplesmente digitar e usar a azcopypartir de qualquer local, a partir de qualquer prompt de comando do shell inc, powershell, git bash etc.

Bevan
fonte
3
  • Se você deseja executá-lo em arquivos cmd.exe ou em lote, é necessário adicionar o diretório em que .exe está na variável% path% ( Sistema ou Usuário )
  • Se você deseja executá-lo na caixa de diálogo Executar (Win + R) ou em qualquer aplicativo que chama ShellExecute , basta adicionar seu exe à chave de caminhos do aplicativo (isso é menos propenso a erros durante a instalação / desinstalação e também não causa confusão. a variável path)
Anders
fonte
2

Coloque-o no diretório c: \ windows ou adicione-o ao "caminho" nas configurações do ambiente (windows-break - tab advanced)

cumprimentos, // t

Teson
fonte
Em vez de colocar executáveis ​​personalizados C:\Windows, deve-se adicionar um diretório personalizado à PATHvariável de ambiente.
Roland Illig 29/10/16
Depende. Putty.exe eu coloquei em / windows.
Teson
1

Use um arquivo em lotes de 1 linha em sua instalação:

SETX PATH "C:\Windows"

execute o arquivo bat

Agora coloque seu .exe em c: \ windows e pronto.

você pode digitar o 'exename' na linha de comando e ele será executado.

Stavm
fonte
2
Em vez de colocar executáveis ​​personalizados C:\Windows, deve-se adicionar um diretório personalizado à PATHvariável de ambiente.
Roland Illig 29/10/16
1

Aliases simples do tipo bash no Windows

Para obter aliases globais do tipo bash no Windows para aplicativos não adicionados automaticamente ao caminho sem adicionar manualmente cada um ao caminho, aqui está a solução mais limpa que eu criei que faz a menor quantidade de alterações no sistema e tem o máximo de flexibilidade para personalização posterior:

"Instalar" o caminho do seu alias

mkdir c:\aliases
setx PATH "c:\aliases;%PATH%"

Adicione seu alias

Abrir em uma nova janela do shell

Para iniciar C:\path to\my program.exe, passando todos os argumentos, abrindo-o em uma nova janela, crie um c:\aliases\my program.batarquivo com o seguinte conteúdo (consulte Comando Iniciar do NT para obter detalhes sobre o comando start):

@echo off
start "myprogram" /D "C:\path to\" /W "myprogram.exe" %*

Janela Executar na Shell Atual

Para começar C:\path to\my program.exe, passando todos os argumentos, mas executando-o na mesma janela (mais parecido com o funcionamento do bash), crie um c:\aliases\my program.batarquivo com o seguinte conteúdo:

@echo off
pushd "C:\path to\"
"my program.exe" %*
popd

Executar na janela atual do shell 2

Se você não precisar que o aplicativo altere o diretório de trabalho atual para operar, basta adicionar um link simbólico ao executável dentro da pasta de aliases:

cd c:\aliases\
mklink "my program.exe" "c:\path to\my program.exe"
Erasmus
fonte
0

Adicione ao PATH, etapas abaixo (Windows 10):

  1. Digite na barra de pesquisa "ambiente ..." e escolha Editar as variáveis ​​de ambiente do sistema que abre a janela Propriedades do Sistema
  2. Clique no botão Variáveis ​​de ambiente ...
  3. Na guia Variáveis ​​de ambiente, clique duas vezes na variável Path na seção Variáveis ​​do sistema
  4. Adicione o caminho à pasta que contém o arquivo .exe no caminho clicando duas vezes na linha vazia e cole o caminho.
  5. Clique em ok e saia. Abra um novo prompt do cmd e pressione o comando em qualquer pasta e ele deve funcionar.
Akash Yellappa
fonte
0

Outra maneira poderia ser através da adição de .LNK seu $ PATHEX. Em seguida, basta criar um atalho para o seu executável (por exemplo: yourshortcut.lnk) e colocá-lo em qualquer um dos diretórios listados em $ PATH.

AVISO NOTA: Saiba que qualquer arquivo .lnk localizado em qualquer diretório listado em seu $ PATH agora também está "PATH'ed". Por esse motivo, eu preferiria o método de arquivo em lotes mencionado anteriormente para esse método.

Hept0p
fonte
-1

Se alguém estiver procurando por isso depois de mim, aqui está uma maneira muito fácil de adicionar seu caminho.

Envie o caminho para um arquivo como mostra a imagem, copie e cole-o e adicione o caminho específico no final com um ponto e vírgula anterior ao novo caminho. Pode ser necessário adaptar antes do Windows 7, mas pelo menos é um ponto de partida fácil.

Imagem do prompt de comando para exportar PATH para arquivo de texto

Kevin
fonte
A parte essencial de uma resposta deve estar em um texto, não em uma captura de tela externa.
Roland Illig 29/10/19
-3

A melhor maneira de fazer isso é instalar o arquivo .exe na pasta windows / system32. Dessa forma, você pode executá-lo em qualquer local. Este é o mesmo lugar em que o ping do .exe pode ser encontrado

Mateus
fonte
Em vez de colocar executáveis ​​personalizados C:\Windows, deve-se adicionar um diretório personalizado à PATHvariável de ambiente.
Roland Illig 29/10/16