2011-06-09 11 views
21

Por lo tanto, en Bash, simplemente configure PS1 para agregar colores a su solicitud. Estoy hablando de la indicación adecuada, no del color del primer plano (texto) o el fondo. Y es realmente fácil en Bash y ayuda mucho si necesita encontrar sus comandos en un mar de salida de texto desordenado.Color para PROMPT (solo la PROMPT adecuada) en cmd.exe y PowerShell?

¿Se puede lograr lo mismo para cmd.exe, o como alternativa, para PowerShell? ¿Un mensaje de color?

No sé si podría hacerse en los viejos tiempos antes de Win32 cargando ANSI.SYS. Creo que eso fue solo para hacer que el primer plano y el fondo fueran coloridos. Pero podría estar equivocado. Y de todos modos, esos días se han ido, y en nuestros tiempos modernos (lo sé), estamos usando cmd.exe o PowerShell.

Sé que tanto cmd.exe como PowerShell son capaces de generar colores. Para cmd.exe, simplemente ejecute color /? para averiguarlo. Pero mi pregunta no es sobre el primer plano y el fondo, eso es todo lo que sabe la humanidad: se trata solo de cambiar el color de la solicitud para cmd.exe, probablemente a través de la variable de entorno PROMPT a través de la variable PS1 para Bash? ¿Es posible?

Y no, Cygwin no es una alternativa para esto. Soy un usuario de Cygwin con MinTTY y todo, y me encanta. Pero todavía quiero que mi prompt cmd.exe esté coloreado.

Respuesta

11

siga este enlace. Hay un truco ANSI desarrollado para el CMD.exe cáscara

link to ansi hack

lo he probado en mi Windows 7 SP1 profesional y funciona como un encanto

enter image description here

+1

Phantastic, gracias! Lo tengo trabajando, también. Las instrucciones en 'readme.txt' son buenas, solo falta una cosa: en los sistemas de 64 bits, debe copiar las dos DLL,' AnsiSupport.dll' y 'DllSpoof.dll', en' C: \ Windows \ La carpeta SysWOW64' en lugar de la carpeta 'C: \ Windows \ system32'. ([¡Asegúrese de leer el truco de la carpeta a menos que lo sepa!] (Http://stackoverflow.com/questions/949959)) Este fue el caso en mi sistema - Win7 Pro 64 bit. Funcionando bien y colorido ahora - gracias de nuevo, eso es ** genial **! – Lumi

+0

** CAVEAT **: Esto es ** no ** un reemplazo 1: 1 más colores ANSI. Aunque no hay problema la mayor parte del tiempo, algunas cosas bien pueden dejar de funcionar. Un ejemplo que he encontrado es la utilidad 'powercfg.exe'. El truco ANSI de 32 bits recogerá cosas en 'C: \ Windows \ SysWOW64' (32 bit), el original en' C: \ Windows \ System32' (64 bit). Con 'powercfg', esto hace una gran diferencia. La versión de 32 bits no me dice por qué mi computadora se despertó. Definitivamente ten esto en cuenta para que no te muerdan. – Lumi

+1

No funciona en Windows 8. –

14

Puede agregar una función Prompt a su perfil en Powershell para hacer prácticamente lo que quiera con el aviso. Así, por ejemplo, algo como esto:

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

Para abrir o crear su perfil PowerShell, ejecute lo siguiente:

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

Y deberías devolver al menos espacio. De lo contrario, PowerShell agregará 'PS>' al final. – stej

+0

Vaya ... se olvidó de eso. Lo arreglaré en mi ejemplo, gracias. – EBGreen

+0

Gracias - funciona bien, después de hacer 'Set-ExecutionPolicy RemoteSigned' (por simplicidad). Pero sin haber investigado mucho sobre cómo era posible en PowerShell, estaba seguro de que era posible. El hack de ANSI para 'cmd.exe', por otro lado, ¡eso es sensacional! :-) – Lumi

2

Se pueden utilizar varios colores (muy útil para identificar los componentes de su sistema, típico en 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 se ha escrito explícitamente aquí, pero en realidad se reemplaza por el valor de la variable de entorno).

Y se puede añadir colores al azar (tomadas de here; this tiene una versión similar; ambos tienen otros ajustes muy interesantes):

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

Todo esto es una buena información, pero una cosa importante que no lo hice ver direccionado es cómo hacer que el mensaje personalizado aparezca cada vez que ejecuta un símbolo del sistema.En Windows mayores, tales como XP y antes, que pondría la variable de entorno PROMPT en el archivo AUTOEXEC.BAT pero en Windows 7 a Windows 10, deberá hacerlo permanente de la siguiente manera:

  • Abrir la línea de Run mediante el uso de la ventanas key + R
  • Tipo "systempropertiesadvanced" (sin las comillas) y pulsa ENTER
  • esto abrirá el cuadro de diálogo Propiedades del sistema (también puede hacer clic derecho en Mi PC y seleccione Propiedades para conseguir esto)
  • Seleccione la opción "avanzada "Pestaña en la parte superior
  • elija "Variables de entorno" cerca de la parte inferior
  • En la zona baja, en las "variables del sistema" área, mirar y ver si actualmente tiene una variable llamada "sistema" (las mayúsculas no importa)
  • Si es así, edite la variable de solicitud y sus cambios con ser permanente
  • De lo contrario, haga clic en "Nuevo" cerca de la parte inferior y para Nombre de variable, ingrese PROMPT y para el valor de la variable, como quiera que sea. El indicador predeterminado tiene un valor de la variable de $ P $ G
  • Haga clic en OK
  • Ejecute el símbolo del sistema para probar
  • HECHO
  • Nota: Yo uso un símbolo del sistema a medida que se parece a la bandera de Texas. El Valor de la variable de esto es: $e[1;44m*$e[41m▀▀$e[0;1m $P$G

(.. La barra blanca se hace manteniendo pulsada la tecla ALT y escribir 223 en el teclado a la derecha hay dos de estos personajes en este sistema)

+0

Está bien eso es brillante. –

Cuestiones relacionadas