コンソールで一部の文字列の文字色と背景色を変えるEchoコマンド拡張
EchoX.exe 文字色 背景色 文字列 [文字色 背景色 文字列]...
文字色と背景色は、数字または名前で指定します。
0 Black
1 DarkBlue
2 DarkGreen
3 DarkCyan
4 DarkRed
5 DarkMagenta
6 DarkYellow
7 Gray
8 DarkGray
9 Blue
10 Green
11 Cyan
12 Red
13 Magenta
14 Yellow
15 White
vbc EchoX.VB
Public Class Class1
Public Shared Sub Main(ByVal Args() As String)
If Args.Length = 0 OrElse Args.Length Mod 3 Then
Console.WriteLine("Usage: EchoX ForegroundColor BackgroundColor String [F B S]...")
For Each ColorName As String In ConsoleColor.GetNames(GetType(ConsoleColor))
Console.WriteLine("{0,2} {1}", [Enum].Format(GetType(ConsoleColor), CType([Enum].Parse(GetType(ConsoleColor), ColorName), ConsoleColor), "d"), ColorName)
Next
Exit Sub
End If
Try
For k As Integer =0 To UBound(Args) Step 3
Console.ForegroundColor = CType([Enum].Parse(GetType(ConsoleColor), Args(k), True), ConsoleColor)
Console.BackgroundColor = CType([Enum].Parse(GetType(ConsoleColor), Args(k+1), True), ConsoleColor)
Console.Write(Args(k+2))
Next
Console.ResetColor()
Catch
Console.ResetColor()
Console.Error.WriteLine("Source" & vbTab & vbTab & Err.Source & vbLf & "Number" & vbTab & vbTab & Err.Number & vbLf & "Description" & vbTab & Err.Description & vbLf & "DLL Error" & vbTab & vbTab & Err.LastDLLError)
End Try
End Sub
End Class
文字列に空白を含むときは、""で囲みます
その中に更に"を含むときは、\"でエスケープします。
このとき、偶数番目の"から奇数番目の"までの間は、CMD.EXEの制御文字^&|<>)を^でエスケープする必要があります。
行末の改行はありません。
« コンソールコマンドを実行して、そのコンソールログを採取するコマンドをVB.NETで作る(その2) | トップページ | .NETオブジェクトのオーバロードされたメソッドのサフィックスを調べる。 »