2011-06-09 94 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

相關問題