Comment personnaliser de manière permanente l'invite de commande dans Windows 7?


74

Je voudrais changer l'invite à $p$g$_$fpermanent, mais il se réinitialise à chaque fois que je rouvre la fenêtre de commande.

Comment puis-je l'obtenir pour rester le même pour toujours pour l'éternité?


9
C'est une question intéressante (+1) car de nos jours, peu de gens savent même que leur invite DOS peut être personnalisée.
Randolf Richardson

14
Ces commandes ne sont-elles pas appelées maintenant?
LarsTech

3
@LartTech: Oui, le DOS est parti depuis longtemps.
grawity

7
Vieilles habitudes! Ce sera toujours une invite DOS pour moi.
oscilatingcretin

2
@Randolf: Je ne savais certainement pas! Bien mérité +1 à cette question.
jprete

Réponses:


65

Créez une nouvelle variable d'environnement appelée PROMPT. Définissez la valeur de la variable sur l'invite souhaitée.

entrez la description de l'image ici

entrez la description de l'image ici


2
+1 Pour être la seule réponse, mentionner la chose importante dans la première phrase. Une fois que l’on sait que l’invite émise par les interpréteurs de commande est contrôlée par une variable d’environnement, le reste se transforme en un simple exercice d’application de la réponse générique SuperUser concernant les variables d’environnement .
JdeBP

En fait, ce n’est pas la seule réponse à mentionner la création de la variable PROMPT - ma réponse le mentionne également à l’étape 4, qui se lit comme suit: 4. Créez une variable appelée "PROMPT" et insérez le texte d’invite souhaité (...)
Randolf Richardson

2
Techniquement, ma réponse mentionne également la variable Invite, car elle fournit la commande permettant de la définir. :)
EBGreen

4
EBGreen et Randolf Richardson, qu'en est-il de " dans la première phrase " vous échappe?
JdeBP

71

A l'invite de commande, tapez:

setx Prompt $p$g$_$f

Puis rouvrez l'invite de commande.

Pour ceux qui ne savent pas comment obtenir de l'aide pour les commandes DOS / CMD, tapez:

setx /?

Obtenir:

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

1
J'ai aussi essayé cela et cela a parfaitement fonctionné. Je devais cependant indiquer la réponse à l'autre type, même si le vôtre était plus direct et plus direct. Son était le premier, alors je devais faire ce qui est juste. Je vous ai voté, cependant.
oscilatingcretin

30
Je me fiche de savoir qui est marqué comme la réponse. Je soulignerai cependant pour référence future (laissez-le comme il est pour celui-ci) que la décision clé pour marquer une réponse n’est pas de savoir qui a répondu en premier, c’est quelle réponse est la meilleure. S'il est vrai que marquer la réponse est une bonne chose en ce sens que cela donne de la représentation, la vraie raison de la marquer est d'aider les personnes qui trouveront cette question plus tard à trouver plus rapidement la meilleure solution. Comme il n'y a rien de mal avec l'autre solution dans ce cas particulier, cela n'a pas d'importance.
EBGreen

1
J'aime particulièrement cette réponse (+1) car elle montre qu'il existe plus d'une façon de faire la même chose ( ce qui est particulièrement souligné dans Perl [programmation] ).
Randolf Richardson

3
Je conviens qu'il ne s'agit pas de la première réponse. Vous avez tous les deux répondu à ma question fondamentale sur la manière de modifier définitivement l'invite. Lorsque deux personnes obtiennent le même résultat, la solution de rechange consiste à utiliser la première réponse. Votre question était courte et pertinente, abordant le problème épineux, alors que son approche était plus compliquée et consistait à augmenter le nombre d'interruptions de l'interface utilisateur et exposait davantage d'options en ce qui concerne les variables d'environnement. J'ai soigneusement pesé les options avant de choisir la réponse.
oscilatingcretin

2
Ce serait formidable d'élargir votre réponse. Il manque actuellement de contexte. Veuillez consulter notre court guide Comment répondre pour voir comment améliorer votre réponse. Alors, que fait-il setxexactement et pourquoi at-il continué à se réinitialiser?
Tamara Wijsman

21

Pour modifier l'apparence de votre invite DOS (ou "invite de commande"), cliquez avec le bouton droit de la souris sur "Ordinateur" (généralement sur votre bureau Windows ou dans le menu Démarrer de Windows), puis procédez comme suit:

  1. Cliquez sur le libellé "Paramètres système avancés".
  2. Cliquez sur le bouton "Variables d'environnement ..."
  3. Cliquez sur le bouton "Nouveau ..." (une "variable utilisateur" ne vous concerne que et les "variables système" affectent tous les utilisateurs).
  4. Créez une variable appelée "PROMPT" et insérez votre texte d'invite souhaité (comme je l'ai inclus pour vous dans l'image finale ci-dessous)
  5. Cliquez sur le bouton "OK" pour fermer la fenêtre "Variables d'environnement".
  6. Cliquez sur le bouton "OK" pour fermer la fenêtre "Propriétés système".

Ce changement survivra également aux redémarrages.

entrez la description de l'image ici

entrez la description de l'image ici

entrez la description de l'image ici


2
J'aime la façon dont vous avez mis en évidence où cliquer dans chaque image. Comment avez-vous réalisé cela?
Konerak

4
@ Konerak: Merci! J'ai ouvert chaque fenêtre, appuyé sur Alt-PrintScreen (pour copier sur la fenêtre active dans le presse-papiers), puis collé dans Adobe Photoshop. Après cela, j'ai créé un calque sur (ou devant) l'image, rempli de noir à 100%, modifié l'opacité du calque à 25% (ce qui permet à l'image de s'estomper à 75%), puis je a utilisé l' outil Rectangle de sélection avec une "plume 3px" pour sélectionner la zone à surligner et a appuyé sur la touche Suppr (pour supprimer de ce calque noir). Après cela, j'ai enregistré l'image en tant que fichier .PNG dans mon répertoire C: / Temp / et je l'ai téléchargée ici.
Randolf Richardson

1
Je suis un photographe complet, mais je vois de quoi tu parles! Je vais essayer cela la prochaine fois que je présenterai notre application à nos utilisateurs - beaucoup plus agréable que les lignes rouges de MS Paint sur tout l'écran. Merci!
Konerak

Snagit coûte moins cher que Photoshop et vous offre de nombreuses options pour travailler avec les écrans de capture. C'est mon préféré pour faire des captures d'écran.
EBGreen

Vote positif pour expliquer comment accéder aux variables d'environnement dans Windows 7 et pour expliquer comment mettre en évidence une image. Des trucs de geek utiles, ici!
CigarDoug

5

Éditez la commande de menu ou le lien qui lance l'invite de commande, changez sa cible, par exemple.

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

Et si vous voulez un espace supplémentaire avant le curseur:

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

+1 pour être une solution intéressante et unique.
ArtOfWarfare

4

Windows est fourni avec Windows PowerShell, ce qui permet de créer des chaînes d’accès parmi d’autres anciennes fonctionnalités exclusivement Linux.

Vous pouvez le démarrer en cliquant sur le bouton Démarrer et en entrant PowerShell, ce qui vous donne trois options. Cliquez sur PowerShell. Faites un clic droit sur la barre de titre de la fenêtre et sélectionnez Propriétés. Dans la fenêtre d’ouverture, vous configurez les paramètres de vue et de comportement.

Sinon, au lieu d'ouvrir PowerShell, sélectionnez et cliquez sur Modules PowerShell.

Consultez la documentation Microsoft pour savoir ce que vous pouvez faire:

PS: Je ne recommanderais pas le shell classique si vous développez des applications sur console.


+1 pour une autre bonne réponse. J'aime particulièrement le terme "Shell classique".
Randolf Richardson

1
Les pipes existent aussi dans CMD.EXE et fonctionnent à peu près de la même façon qu’elles le font habituellement avec unix. Ils font partie de la syntaxe CMD depuis les premières versions bêta publiques de NT, ainsi que de la syntaxe de commande de COMMAND.COM sous DOS.
RBerteig

1
La différence énorme entre les tubes de commande, les tubes * nix et les tubes Powershell réside dans le fait que les tubes Powershell transmettent des objets et non des chaînes. Ceci est un changeur de jeu imo.
EBGreen

Qu'est-ce que PowerShell a à voir avec la question?
Synetech

1
@ Syntech inc. - Rien directement. Indirectement, il s'agit toutefois d'une alternative à l'utilisation de cmd.exe qui répondrait à l'intention de la question en fournissant une invite personnalisable pouvant être définie via un paramètre de profil.
EBGreen

1

Méthode définitive:

setx prompt ""

Pour tous les utilisateurs:

setx prompt "" /M

Exemple d'invite personnalisable, avec style:

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"
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.