【PowerShell】터미널의 타이틀 바에 풀 패스를 표시한다
9524 단어 WindowsPowerShellcmder
$host.UI.RawUI.WindowTitle
로만 지정할 수 있습니다만, 콘솔 에뮬레이터의 Cmder 에는 또 하나의 궁리가 필요했습니다.궁극적으로 아래와 같은 외형입니다.
코드
결론부터 말하면, 이전 기사 에서도 소개한 C# 의 SendMessage 를 사용합니다.
윈도우 핸들 얻기
(위의 기사에서 소개한 것과 동일합니다)
function Get-ConsoleWindowHandle {
$p = Get-Process -Id $PID
$i = 0
while ($p.MainWindowHandle -eq 0) {
if ($i++ -gt 10) {
return $null
}
$p = $p.Parent
}
return $p.MainWindowHandle
}
$Global:CONSOLE_HWND = Get-ConsoleWindowHandle
C#에서 클래스 정의
if(-not ('PowerShell.Window' -as [type])) {
Add-Type -Name Window -Namespace PowerShell -MemberDefinition @'
[DllImport("user32.dll")]
private static extern int SendMessage(IntPtr hWnd, uint Msg, int wParam, string lParam);
public static void SetText(IntPtr hwnd, string text) {
SendMessage(hwnd, 0x000C, 0, text);
}
'@
}
function Set-ConsoleWindowTitle {
param (
$title
)
$hwnd = $Global:CONSOLE_HWND
if (-not $hwnd) {
return
}
[PowerShell.Window]::SetText($hwnd, $title)
}
프롬프트에 통합
$PROFILE
내의 prompt
함수 내에서 호출하여 작업중인 디렉토리의 전체 경로를 표시합니다.드디어 프롬프트의 색을 요일별로 바꾸고 있습니다. 재택근무가 계속되어도 요일 감각을 잃지 않게 된다…
function prompt {
$table = @(
<#日#> "DarkYellow",
<#月#> "Blue",
<#火#> "Magenta",
<#水#> "Cyan",
<#木#> "Green",
<#金#> "Yellow",
<#土#> "Gray"
)
$dailyColor = $table[[System.Convert]::toint32((Get-Date).DayOfWeek)]
$leaf = $pwd.Path | Split-Path -Leaf
Set-ConsoleWindowTitle -title $pwd.Path
if ($pwd.Path | Split-Path -Parent) {
Write-Host "~\" -BackgroundColor DarkGray -ForegroundColor White -NoNewline
}
Write-Host $leaf -BackgroundColor $dailyColor -ForegroundColor Black -NoNewline
return "`n> "
}
Reference
이 문제에 관하여(【PowerShell】터미널의 타이틀 바에 풀 패스를 표시한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/AWtnb/items/1b777bccd8f69434fbbb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)