2011-06-09 96 views
21

所以在Bash中,您只需配置PS1即可为您的提示添加颜色。我正在谈论正确的提示,而不是前景(文本)或背景的颜色。在Bash中它非常简单,如果你需要在混乱的文本输出中找到你的命令,它会有很大的帮助。cmd.exe和PowerShell中的PROMPT颜色(只是PROMPT本身)?

您是否可以为cmd.exe实现相同的功能,或者作为PowerShell的后备设备?一个彩色提示?

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

我知道cmd.exe和PowerShell都能够输出彩色。对于cmd.exe,只需运行color /?即可了解。但我的问题不是关于前景和背景,人类都知道这一点 - 它只是改变cmd.exe的提示颜色,可能通过PROMPT环境变量,如通过PS1变量为Bash?可能吗?

不,Cygwin不是这个选择。我是一个使用MinTTY的Cygwin用户,我喜欢它。但我仍然想让我的cmd.exe提示也变成彩色。

回答

11

请点击此链接。有developped为的CMD.exe的ANSI黑客壳

link to ansi hack

我已经试过了我的胜利7专业SP1和工程就像一个魅力

enter image description here

+1

鬼祟,谢谢!我也得到了它的工作。 'readme.txt'中的指令很好,只是缺少一件事:在64位系统上,你必须将两个DLL(AnsiSupport.dll和DllSpoof.dll)复制到C:\ Windows \ SysWOW64'文件夹而不是'C:\ Windows \ system32'文件夹。 ([请务必阅读文件夹欺骗,除非你知道!](http://stackoverflow.com/questions/949959))这是我的系统上的情况 - Win7 Pro 64位。现在工作得很好,多彩 - 再次感谢,这是**很棒! – Lumi 2011-06-09 22:25:06

+0

** CAVEAT **:这是**不是** 1:1替换加ANSI颜色。尽管大部分时间没有问题,但有些事情可能会停止工作。我遇到的一个例子是'powercfg.exe'实用程序。 32位ANSI hack将在'C:\ Windows \ SysWOW64'(32位)中获取东西,这是C:\ Windows \ System32(64位)中的原始东西。使用'powercfg',这确实有很大的不同。 32位版本不会告诉我为什么我的电脑醒了。绝对要记住这一点,以免被咬伤。 – Lumi 2014-01-09 16:05:36

+1

在Windows 8中不起作用。 – 2014-02-10 18:55:56

14

您可以在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} 
+4

而且你至少应该返回空间。否则,PowerShell将在最后附加'PS>'。 – stej 2011-06-09 18:49:37

+0

糟糕...忘了这一点。我会在我的例子中修复它,谢谢。 – EBGreen 2011-06-09 18:50:59

+0

谢谢 - 在完成Set-ExecutionPolicy RemoteSigned后(为了简单起见)很好地工作。但是,如果没有在PowerShell上进行多少搜索,我确信这是可能的。另一方面,对于'cmd.exe'的ANSI黑客攻击,这真是太棒了! :-) – Lumi 2011-06-09 22:38:25

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

这是所有好的信息,但我没一件重要的事请参阅解决方法是如何使每次运行命令提示符时出现自定义提示。在老版本的Windows,如XP之前,您将通过Windows 10把提示符环境变量在AUTOEXEC.BAT文件,但在Windows 7中,你会使其永久如下:

  • 打开Run提示符下使用视窗key + R
  • 类型“systempropertiesadvanced”(不带引号)和命中ENTER
  • 这将打开系统属性对话框(您也可以右键单击我的电脑,选择属性得到这个)
  • 选择“高级“顶部的标签
  • 选择“环境变量”接近底部
  • 在下方区域,在“系统变量”区域,再看看吧,如果你目前有一个名为“提示”变量(大小写无所谓)
  • 如果是这样,编辑提示变量,你的变化永久
  • 如果不是,请点击底部附近的“新建”,并为变量名称,输入PROMPT和变量值,无论你想要它。默认的提示有$ P $ G
  • 单击确定
  • 的变量值运行命令提示符测试
  • DONE
  • 注:我使用自定义命令提示符,它看起来像得克萨斯州旗。这个变量值为: $e[1;44m*$e[41m▀▀$e[0;1m $P$G

(。白色条带是通过按住ALT键和右侧的小键盘上输入223做出有两个在此提示这些字符)

+0

好的,这太棒了。 – 2016-11-30 14:51:03

相关问题