cmd.exe和PowerShell中的PROMPT(仅适用于PROMPT)的颜色?

时间:2011-06-09 17:47:44

标签: powershell command-prompt prompt cmd

因此,在Bash中,您只需配置PS1即可为提示添加颜色。我说的是正确的提示,而不是前景(文本)或背景的颜色。而且它在Bash中非常简单,如果你需要在凌乱的文本输出中找到你的命令,它会有很大的帮助。

对于PowerShell,您可以为cmd.exe或回退实现相同的目标吗?彩色提示?

我不知道是否可以在Win32之前通过加载ANSI.SYS来完成。我认为这只是为了使前景和背景丰富多彩。但我可能错了。无论如何,那些日子已经过去了,在我们现代(我知道),我们正在使用cmd.exe或PowerShell。

我知道cmd.exe和PowerShell都能够进行彩色输出。对于cmd.exe,只需运行color /?即可查找。但我的问题不是关于前景和背景,这些都是人类已知的 - 它只是改变cmd.exe的提示颜色,可能是通过PROMPT环境变量通过PS1变量来改变击?有可能吗?

不,Cygwin不是替代品。我是使用MinTTY的Cygwin用户,我喜欢它。但我仍然希望我的cmd.exe提示符也是彩色的。

5 个答案:

答案 0 :(得分:15)

您可以在Powershell中为您的个人资料添加一个提示功能,以便通过提示做任何您想做的事情。例如,像这样:

function prompt
{
    Write-Host "PS $(get-location)>"  -nonewline -foregroundcolor Magenta
    return ' '
}

要打开或创建PowerShell配置文件,请运行以下命令:

if(Test-Path $profile){notepad $profile}else{New-Item -path $profile -type file -force}

答案 1 :(得分:11)

点击此链接。为CMD.exe shell开发了一个ANSI hack

link to ansi hack

我已经在我的win 7专业版SP1上尝试过它并且像魅力一样

enter image description here

答案 2 :(得分:5)

这是一个很好的信息,但我没有看到的重要事项是每次运行命令提示符时如何显示自定义提示。在较旧的Windows(例如XP和之前的版本)中,您可以将PROMPT环境变量放在AUTOEXEC.BAT文件中,但是在Windows 7到Windows 10中,您可以将其设置为永久性,如下所示:

  • 使用Windows Run
  • 打开key + R提示
  • Type" systempropertiesadvanced" (不带引号)并点击ENTER
  • 这将打开“系统属性”对话框(您也可以右键单击“我的电脑”并选择“属性”来获取此信息)
  • 选择"高级"顶部的标签
  • 选择"环境变量"靠近底部
  • 在下部区域,在"系统变量"区域,查看并查看您当前是否有一个名为"提示"的变量。 (大写并不重要)
  • 如果是,请编辑提示变量,并将更改设为永久性
  • 如果没有,请点击"新"靠近底部,对于变量名称,输入PROMPT和变量值,无论你想要什么。默认提示的变量值为$ P $ G
  • 点击确定
  • 运行命令提示符以进行测试
  • DONE
  • 注意:我使用自定义命令提示符,它看起来像德克萨斯州旗。这个变量值是: $e[1;44m*$e[41m▀▀$e[0;1m $P$G

(通过按住ALT并在右侧的键盘上键入223来制作白条。此提示中有两个这样的字符。)

答案 3 :(得分:2)

您可以使用多种颜色(非常有用于识别提示的组件,在Unix中很常见):

function prompt {
    Write-Host ("@") -NoNewLine -ForegroundColor Magenta
    Write-Host ("$env:COMPUTERNAME") -NoNewLine -ForegroundColor Green
    Write-Host (":") -NoNewLine -ForegroundColor Magenta
    Write-Host ($(Get-Location)) -NoNewLine -ForegroundColor Green
    Write-Host (">") -NoNewLine -ForegroundColor Red
    return " "
}

enter image description here

(此处COMPUTERNAME已明确写入,但实际上它已被环境变量的值替换。)

你可以添加随机颜色(取自here; this有相似的版本;两者都有其他非常有趣的调整):

function prompt
{
    $random = new-object random
    $color=[System.ConsoleColor]$random.next(1,16)
    Write-Host ("PS " + $(get-location) +">") -nonewline -foregroundcolor $color
    return " "
}

答案 4 :(得分:0)

基于@KriZ的答案,从2019年开始,ANSI转义序列在Windows 10 cmd.exe中可完美运行。不需要显式调出ansi.sys或复制任何文件。它只是在Windows 10中开箱即用。

例如,

set PROMPT=$E[1;37m[user@machine:$E[1;35m$P ]$$ $E[1;37m

产生:

example colored prompt

(请注意最后$之后的空格)

驱动器之前的所有内容均以粗体白色着色,驱动器/文件夹中的所有内容均以粉红色粗体显示,最后$之后的所有内容均以粗体白色显示。

颜色的格式为:

$E[bold_or_not;colorm

m始终位于颜色编号之后。 bold_or_not = 0或1。这是颜色的指南:

  

0关闭属性   1高​​强度   2正常强度   4下划线(仅单声道)   5闪烁   7反向视频   8不可见   30黑色   31红色   32绿色   33黄色   34蓝色   35洋红色   36青色   37白色   40黑色   41红色   42绿色   43黄色   44蓝色   45洋红色   46青色   47白色

颜色来源:https://kb.iu.edu/d/aamm