Como posso personalizar permanentemente o prompt de comando no Windows 7?

74

Gostaria de alterar o prompt para $p$g$_$fpermanentemente, mas ele é redefinido sempre que reabrir a janela de comando.

Como posso fazer com que permaneça o mesmo para sempre pela eternidade?

oscilatingcretin
fonte
9
Essa é uma pergunta interessante (+1), porque atualmente não há muitas pessoas que sabem que o prompt do DOS pode ser personalizado.
Randolf Richardson
14
Não são esses chamados comandos de comando agora?
LarsTech
3
@ LaurTech: Sim, o DOS se foi há muito tempo.
grawity
7
Velhos hábitos! Sempre será um prompt do DOS para mim.
precisa saber é o seguinte
2
@ Randolf: Eu certamente não sabia! Bem merecido +1 a esta pergunta.
jprete

Respostas:

65

Crie uma nova variável de ambiente chamada PROMPT. Defina o valor da variável para o prompt desejado.

insira a descrição da imagem aqui

insira a descrição da imagem aqui

John T
fonte
2
+1 Por ser a única resposta para mencionar o importante na primeira frase. Quando se sabe que o prompt emitido pelos intérpretes de comando é controlado por uma variável de ambiente, o restante se torna um exercício simples de aplicação da resposta genérica do Superusuário sobre variáveis ​​de ambiente .
precisa saber é o seguinte
Na verdade, essa não é a única resposta para mencionar a criação da variável PROMPT - minha resposta também menciona isso na etapa 4, que diz: 4. Crie uma variável chamada "PROMPT" e insira o texto desejado (...)
Randolf Richardson
2
Tecnicamente, minha resposta também menciona a variável Prompt, pois fornece o comando para defini-la. :)
EBGreen
4
EBGreen e Randolf Richardson, que tal " na primeira frase " estar escapando de vocês dois?
JdeBP
71

No prompt de comando, digite:

setx Prompt $p$g$_$f

Em seguida, reabra o prompt de comando.

Para quem não sabe como obter ajuda para comandos do DOS / CMD, digite:

setx /?

Para obter:

SetX has three ways of working:

Syntax 1:
    SETX [/S system [/U [domain\]user [/P [password]]]] var value [/M]

Syntax 2:
    SETX [/S system [/U [domain\]user [/P [password]]]] var /K regpath [/M]

Syntax 3:
    SETX [/S system [/U [domain\]user [/P [password]]]]
         /F file {var {/A x,y | /R x,y string}[/M] | /X} [/D delimiters]

Description:
    Creates or modifies environment variables in the user or system
    environment. Can set variables based on arguments, regkeys or
    file input.

Parameter List:
    /S     system          Specifies the remote system to connect to.

    /U     [domain\]user   Specifies the user context under which
                           the command should execute.

    /P     [password]      Specifies the password for the given
                           user context. Prompts for input if omitted.

    var                    Specifies the environment variable to set.

    value                  Specifies a value to be assigned to the
                           environment variable.

    /K     regpath         Specifies that the variable is set based
                           on information from a registry key.
                           Path should be specified in the format of
                           hive\key\...\value. For example,
                           HKEY_LOCAL_MACHINE\System\CurrentControlSet\
                           Control\TimeZoneInformation\StandardName.

    /F     file            Specifies the filename of the text file
                           to use.

    /A     x,y             Specifies absolute file coordinates
                           (line X, item Y) as parameters to search
                           within the file.

    /R     x,y string      Specifies relative file coordinates with
                           respect to "string" as the search parameters.

    /M                     Specifies that the variable should be set in
                           the system wide (HKEY_LOCAL_MACHINE)
                           environment. The default is to set the
                           variable under the HKEY_CURRENT_USER
                           environment.

    /X                     Displays file contents with x,y coordinates.

    /D     delimiters      Specifies additional delimiters such as ","
                           or "\". The built-in delimiters are space,
                           tab, carriage return, and linefeed. Any
                           ASCII character can be used as an additional
                           delimiter. The maximum number of delimiters,
                           including the built-in delimiters, is 15.

    /?                     Displays this help message.

NOTE: 1) SETX writes variables to the master environment in the registry.

      2) On a local system, variables created or modified by this tool
         will be available in future command windows but not in the
         current CMD.exe command window.

      3) On a remote system, variables created or modified by this tool
         will be available at the next logon session.

      4) The valid Registry Key data types are REG_DWORD, REG_EXPAND_SZ,
         REG_SZ, REG_MULTI_SZ.

      5) Supported hives:  HKEY_LOCAL_MACHINE (HKLM),
         HKEY_CURRENT_USER (HKCU).

      6) Delimiters are case sensitive.

      7) REG_DWORD values are extracted from the registry in decimal
         format.

Examples:
    SETX MACHINE COMPAQ
    SETX MACHINE "COMPAQ COMPUTER" /M
    SETX MYPATH "%PATH%"
    SETX MYPATH ~PATH~
    SETX /S system /U user /P password  MACHINE COMPAQ
    SETX /S system /U user /P password MYPATH ^%PATH^%
    SETX TZONE /K HKEY_LOCAL_MACHINE\System\CurrentControlSet\
         Control\TimeZoneInformation\StandardName
    SETX BUILD /K "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows
         NT\CurrentVersion\CurrentBuildNumber" /M
    SETX /S system /U user /P password TZONE /K HKEY_LOCAL_MACHINE\
         System\CurrentControlSet\Control\TimeZoneInformation\
         StandardName
    SETX /S system /U user /P password  BUILD /K
         "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\
         CurrentVersion\CurrentBuildNumber" /M
    SETX /F ipconfig.out /X
    SETX IPADDR /F ipconfig.out /A 5,11
    SETX OCTET1 /F ipconfig.out /A 5,3 /D "#$*."
    SETX IPGATEWAY /F ipconfig.out /R 0,7 Gateway
    SETX /S system /U user /P password  /F c:\ipconfig.out /X
EBGreen
fonte
1
Eu tentei isso também, e funcionou perfeitamente. Eu tive que marcar a resposta do outro cara, apesar de a sua ser mais direta e objetiva. A dele foi a primeira, então eu tive que fazer o que é certo. Eu votei em você, no entanto.
oscilatingcretin
30
Eu realmente não me importo com quem é marcado como a resposta. Vou apontar para referência futura (deixe como está para esta) que a decisão chave para marcar uma resposta não é quem respondeu primeiro, mas qual é a melhor resposta. Embora seja verdade que marcar a resposta seja bom e dar rep, o verdadeiro motivo para marcar a resposta é ajudar as pessoas que encontrarem essa pergunta posteriormente a encontrar mais rapidamente a melhor solução. Como não há nada errado com a outra solução nesse caso específico, isso não importa.
EBGreen
1
Eu particularmente gosto desta resposta (+1) porque mostra que há mais de uma maneira de fazer a mesma coisa ( algo que é particularmente enfatizado no Perl [programação] ).
Randolf Richardson
3
Concordo que não se trata da primeira resposta. Ambos responderam à minha pergunta básica de como alterar permanentemente o prompt. Quando duas pessoas conseguem a mesma coisa, a alternativa é usar a primeira resposta. O seu foi curto e direto ao ponto, abordando o problema básico, enquanto o dele era uma abordagem mais complicada, com o salto da interface do usuário, que expunha mais opções em relação às variáveis ​​de ambiente. Pesei as opções cuidadosamente antes de escolher a resposta.
Oscilatingcretin
2
Seria ótimo expandir sua resposta. Atualmente, está faltando contexto. Consulte o nosso breve guia Como responder para ver como você pode melhorar sua resposta. Então, o que setxexatamente faz e por que ele continuou se redefinindo?
Tamara Wijsman
21

Para alterar a aparência do seu prompt do DOS (ou "prompt de comando"), clique com o botão direito do mouse em "Computador" (geralmente na área de trabalho do Windows ou no menu Iniciar do Windows) e siga estas etapas:

  1. Clique no rótulo "Configurações avançadas do sistema"
  2. Clique no botão "Variáveis ​​de ambiente ..."
  3. Clique no botão "Novo ..." (uma "Variável de usuário" afeta apenas você e "Variáveis ​​de sistema" afeta todos os usuários)
  4. Crie uma variável chamada "PROMPT" e insira o texto do prompt desejado (como incluímos na figura final abaixo)
  5. Clique no botão "OK" para fechar a janela "Variáveis ​​de ambiente"
  6. Clique no botão "OK" para fechar a janela "Propriedades do sistema"

Essa alteração também sobreviverá às reinicializações.

insira a descrição da imagem aqui

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Randolf Richardson
fonte
2
Eu amo como você destacou onde clicar em cada imagem. Como você conseguiu isso?
Konerak
4
@Konerak: Obrigado! Abri cada janela, pressionei Alt-PrintScreen (para copiar na janela ativa atual para a área de transferência) e colei-a no Adobe Photoshop. Depois disso, criei uma camada em cima (ou na frente) da imagem, preenchi-a com 100% de preto, alterei a opacidade da camada para 25% (o que permite que a imagem desbotasse em um nível de 75%), então eu usou a Rectangular Marquee Tool com uma "pena de 3px" para selecionar a área a destacar e pressionou a tecla Delete (para excluir dessa camada preta). Depois disso, salvei a imagem como um arquivo .PNG no meu diretório C: / Temp / e a carreguei aqui.
Randolf Richardson
1
Eu sou um noob completo do photoshop, mas vejo do que você está falando! Vou tentar na próxima vez que apresentar nosso aplicativo aos nossos usuários - muito melhor do que as linhas vermelhas do MS Paint em toda a tela. Obrigado!
Konerak
O Snagit custa menos que o Photoshop e oferece muitas opções para trabalhar com as telas também. É o meu favorito para fazer capas de tela.
EBGreen
Voto a favor para explicar como chegar a Environment Variables no Windows 7 e para explicar como destacar uma imagem. Material nerd útil, aqui!
CigarDoug
5

Edite o comando ou link do menu que inicia o prompt de comando, altere seu destino, por exemplo.

%SystemRoot%\system32\cmd.exe /K "prompt $p$g$_$f"

E se desejar um espaço extra antes do cursor:

%SystemRoot%\system32\cmd.exe /K "prompt $p$g$_$f "
JJ Okie
fonte
+1 por ser uma solução interessante e única.
ArtOfWarfare
4

O Windows vem com o Windows PowerShell, que permite o pipeline entre outros recursos anteriores somente do Linux.

Você pode iniciá-lo clicando no botão Iniciar e inserindo o PowerShell, que oferece três opções. Clique em PowerShell. Clique com o botão direito do mouse na barra de título da janela e selecione Propriedades. Na janela de abertura, você define as configurações de exibição e comportamento.

Caso contrário, em vez de abrir o PowerShell em primeiro lugar, selecione e clique em módulos do PowerShell.

Consulte a documentação da Microsoft para saber o que você pode fazer:

PS: Eu não recomendaria o shell clássico se você desenvolver aplicativos de console.

Lorenz Lo Sauer
fonte
+1 para outra boa resposta. Eu particularmente gosto do termo "Casca Clássica".
Randolf Richardson
1
Os pipes também existem no CMD.EXE e funcionam da mesma forma que no clássico no unix. Eles fizeram parte da sintaxe do CMD das primeiras versões beta públicas do NT e também fizeram parte da sintaxe de comando do COMMAND.COM no DOS.
RBerteig
1
A enorme diferença entre os tubos de shell de comando, os tubos de shell * nix e os tubos do PowerShell é que os tubos do PowerShell passam objetos e não cadeias. Esta é uma mudança de jogo imo.
EBGreen
O que o PowerShell tem a ver com a pergunta?
precisa saber é o seguinte
1
@Syntech inc. Nada diretamente. No entanto, indiretamente, é uma alternativa ao uso do cmd.exe que atenda à intenção da pergunta, fornecendo um prompt personalizável que pode ser definido por meio de uma configuração de perfil.
EBGreen
1

Método definitivo:

setx prompt ""

Para todos os usuários:

setx prompt "" /M

Exemplo de prompt personalizável, com estilo:

setx PROMPT "$_$e[0;1;44mN$e[1;30;47mI$e[0;1;44mC$E[35;40m $d$s$t$h$h$h$h$h$h$_$E[1;33;40m$p$_$E[0;0m~$g$s"
Jerson Martínez
fonte