如何在Windows 7中永久自定义命令提示符?


74

我想改变提示 $p$g$_$f 永久,但每次重新打开命令窗口时它都会重置。

我怎样才能让它永远永远保持不变?


9
这是一个有趣的问题(+1),因为现在没有很多人甚至知道他们的DOS提示可以自定义。
Randolf Richardson

14
现在不是这些叫做Command的提示吗?
LarsTech

3
@La- rsTech:是的,DOS早已不复存在。
grawity

7
老习惯!对我来说它总是一个DOS提示符。
oscilatingcretin

2
@Randolf:我当然不知道!这个问题当之无愧的+1。
jprete

Answers:


65

创建一个名为PROMPT的新环境变量。将变量值设置为所需的提示。

enter image description here

enter image description here


2
+1这是第一句中提到重要内容的唯一答案。一旦知道命令解释器发出的提示是由环境变量控制的,其余部分就会变成一个简单的应用练习 通用的SuperUser回答有关环境变量的问题
JdeBP

实际上,这并不是提及PROMPT变量创建的唯一答案 - 我的回答在第4步中也提到了这一点,其中包括: 4.创建一个名为“PROMPT”的变量并插入所需的提示文本(...)
Randolf Richardson

2
从技术上讲,我的回答提到了Prompt变量,因为它提供了设置它的命令。 :)
EBGreen

4
EBGreen和Randolf Richardson,那么“ 在第一句话 “正在逃避你们两个人?
JdeBP

71

在命令提示符下键入:

 SETX  提示$ p $ g $ _ $ f 

然后重新打开命令提示符。

对于任何不知道如何获得DOS / CMD命令帮助的人,请键入:

setx /?

要得到:

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
我也试过这个,而且效果很好。不过,我必须将另一个人的标记作为答案,即使你的人更直接也更重要。他是第一个,所以我必须做正确的事。不过,我对你赞不绝口。
oscilatingcretin

30
我真的不在乎谁被标记为答案。我将指出将来的参考(尽管如此),标记答案的关键决定不是谁首先回答它是哪个答案是最好的。虽然确定答案是好的,但它给了代表真实的代表 原因 标记答案是帮助后来发现此问题的人更快地找到最佳解决方案。由于在这种特殊情况下其他解决方案没有任何问题,因此无关紧要。
EBGreen

1
我特别喜欢这个答案(+1),因为它表明有不止一种方法可以做同样的事情( Perl [编程]特别强调的东西 )。
Randolf Richardson

3
我同意这不是第一个答案。你们俩都回答了我如何永久改变提示的基本问题。当两个人达到同样的目的时,后退就是使用第一个答案。你的问题很简短,解决了这个问题,而他是一个更复杂的UI跳跃方法,暴露出更多关于环境变量的选择。在选择答案之前,我仔细权衡了选项。
oscilatingcretin

2
扩展你的答案会很棒。目前缺乏背景。请看我们的简短 怎么回答 指导您了解如何更好地回答您的问题。那么,是什么呢 setx 确切地做了,为什么它一直在重置?
Tom Wijsman

21

要更改DOS提示符(或“命令提示符”)的外观,请右键单击“计算机”(通常在Windows桌面或Windows“开始”菜单中),然后按照下列步骤操作:

  1. 单击“高级系统设置”标签
  2. 单击“环境变量...”按钮
  3. 单击“新建...”按钮(“用户变量”仅影响您,“系统变量”影响所有用户)
  4. 创建一个名为“PROMPT”的变量并插入所需的提示文本(正如我在下面的最后一张图片中所包含的那样)
  5. 单击“确定”按钮以关闭“环境变量”窗口
  6. 单击“确定”按钮以关闭“系统属性”窗口

此更改也将在重新启动后继续存在。

enter image description here

enter image description here

enter image description here


2
我喜欢你如何突出显示每个图像中的点击位置。你是怎么做到的?
Konerak

4
@Konerak:谢谢!我打开每个窗口,按下Alt-PrintScreen(将当前活动窗口复制到剪贴板),然后将其粘贴到Adobe Photoshop中。之后,我在图像的顶部(或前面)创建了一个图层,用100%黑色填充它,将图层的不透明度更改为25%(这使得图像以75%的水平淡出),然后我用了 矩形选框工具 使用“3px羽毛”选择要突出显示的区域并按下Delete键(从此黑色图层中删除)。之后,我将图像保存为我的C:/ Temp /目录中的.PNG文件并将其上传到此处。
Randolf Richardson

1
我是一个完整的photoshop菜鸟,但我看到你在说什么!我将在下次向用户展示我们的应用程序时尝试这一点 - 比整个屏幕上的MS Paint红线更好。谢谢!
Konerak

Snagit的成本低于Photoshop,并为您提供了许多用于处理屏幕截图的选项。这是我最喜欢的屏幕帽。
EBGreen

Upvoted用于解释如何在Windows 7中获取环境变量,以及解释如何突出显示图像。有用的极客的东西,在这里!
CigarDoug

5

编辑菜单命令或链接,启动命令提示符,更改其目标,例如。

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

如果在光标前需要额外的空间:

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

+1是一个有趣而独特的解决方案。
ArtOfWarfare

4

Windows附带Windows PowerShell,允许在其他以前的Linux专用功能中进行流水线操作。

您可以通过单击“开始”按钮并输入PowerShell来启动它,它为您提供了三个选项。单击PowerShell。右键单击窗口标题栏,然后选择“属性”。在打开的窗口中,您可以配置视图和行为设置。

否则,不要先打开PowerShell,然后选择并单击PowerShell模块。

有关您可以执行的操作,请参阅Microsoft文档:

PS:如果您开发控制台应用程序,我不推荐使用经典shell。


+1为另一个好的答案。我特别喜欢“古典贝壳”这个词。
Randolf Richardson

1
管道也存在于CMD.EXE中,并且与unix上的经典工作几乎相同。它们是NT最早公开测试版的CMD语法的一部分,也是DOS上COMMAND.COM的命令语法的一部分。
RBerteig

1
命令shell管道,* nix shell管道和powershell管道之间的巨大差异是powershell管道传递对象而不是字符串。这是一个改变游戏规则的游戏。
EBGreen

PowerShell与这个问题有什么关系?
Synetech

1
@Syntech inc。 - 没有直接的。但是间接地,通过提供可通过配置文件设置设置的可自定义提示,它可以替代使用符合问题意图的cmd.exe。
EBGreen

1

确定方法:

setx prompt ""

对于所有用户:

setx prompt "" /M

提示可自定义的示例,带样式:

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"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.