可以配置 sqlcmd 支持 ANSI 转义序列(用于着色 PRINT 输出)

Can sqlcmd be configured support ANSI escape sequences (for coloring PRINT output)

我是 运行 .sql 脚本,通过 sqlcmd in a cmd shell 并且希望脚本以彩色发出我的 PRINT 输出。

How to echo with different colors in the Windows command line 演示了 Windows 10 CMD 如何支持 ANSI 转义序列。

我猜 sqlcmd 运行它自己的 cmd shell 因为颜色没有出现。

sqlcmd -S (LocalDB)\MSSQLLocalDB
> print 'NOTE: my message'
> go
NOTE: my message  <--- Appears white on black.

在下一个打印中有 ^[.
^[ 是命令 shell 呈现文字转义字符的方式。
使用组合键 Alt-Keypad 027 从键盘输入文字转义。

> print '^[92mNOTE: my message ^[0m'
> go
□92mNOTE: my message□0m <--- Would like this to appear bright green on black

sqlcmd shell 不支持 ANSI 转义序列。转义字符输出为方框 (□) 字形,亮绿色的 92m 序列未被解释。

可以将 sqlcmd shell 配置为支持 ANSI 转义序列吗?

我正在使用 Windows 10 和 SQLExpress 2016。

>sqlcmd -?
Microsoft (R) SQL Server Command Line Tool
Version 11.0.2100.60 NT x64
Copyright (c) 2012 Microsoft. All rights reserved.

仔细阅读 "Miscellaneous Commands" 下的 [sqlcmd 实用程序文档][1] 显示了功能

  • [:] !! 执行操作系统命令。

因此可以使用 ANSI 转义序列发出 ECHO 命令以获得着色

:!!ECHO <alt-027>[1;32mThis is bright green.<alt-027>[0m This is not.